如何向XML DOM对象添加名称空间前缀?

我正在尝试使用特定的命名空间构建XML文档。 我想要生成的最终文档看起来像这样:

 token token token  

这是我到目前为止所拥有的。

 Document document = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument(); Element requestElement = document.createElementNS("http://www.myschema.com", "documentObject"); document.appendChild(requestElement); Element sender = document.createElement("sender"); requestElement.appendChild(sender); Text senderText = document.createTextNode("Xmlsender"); sender.appendChild(senderText); Element receiver = document.createElement("receiver"); requestElement.appendChild(receiver); Text receiverText = document.createTextNode("Xmlreceiver"); receiver.appendChild(receiverText); Element payload = document.createElement("payload"); requestElement.appendChild(payload); Text payloadText = document.createTextNode("Xmlpayload"); payload.appendChild(payloadText); StringWriter sw = new StringWriter(); StreamResult result = new StreamResult(sw); DOMSource source = new DOMSource(requestElement); TransformerFactory tf = TransformerFactory.newInstance(); Transformer transformer = tf.newTransformer(); transformer.setOutputProperty(OutputKeys.ENCODING, "utf-8"); transformer.transform(source, result); String xmlString = sw.toString(); System.out.println(xmlString) 

出于某种原因,当我运行上面的模式时,没有前缀。 如下所示:

   Xmlsender Xmlreceiver Xmlpayload  

我需要做什么才能使XML完全如第一个带有命名空间前缀的XML示例和带有命名空间前缀的标记所示?

我正在尝试创建一个XML字符串,该字符串将用于Spring-WS Web服务,该服务器需要一个JAXB对象,该对象采用第一个示例中所示的格式。

您可以使用setPrefix

但最好像这样创建根元素:

 document.createElementNS("http://www.myschema.com", "m:documentObject"); 

另请注意,将null传递给createElement是强制null命名空间的受支持方式。 在您的原始示例中,这将无法工作,因为您的文档元素通过组合没有前缀的名称空间URI有效地强制默认名称空间。