微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – 如何在XML DOM对象中添加命名空间前缀?

我正在尝试使用特定的命名空间来构建一个 XML文档.我想要生成的最终文档应该是这样的:
<m:documentObject xmlns:m="http://www.myschema.com">
    <sender>token</sender>
    <receiver>token</receiver>
    <payload>token</payload>
</m:documentObject>

这是我到目前为止.

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)

由于某些原因,当我运行上面的架构出来没有前缀.如下所示:

<?xml version="1.0" encoding="utf-8"?>
<documentObject xmlns="http://www.myschema.com">
    <sender>Xmlsender</sender>
    <receiver>Xmlreceiver</receiver>
    <payload>Xmlpayload</payload>
</documentObject>

我需要做什么,以便XML完全如第一个XML示例所示,名称空间前缀和标签具有命名空间前缀?

我正在尝试创建一个XML字符串,该字符串将用于Spring-WS webservice,该Web服务器希望使用第一个示例中显示的格式的JAXB对象.

解决方法

您可以使用 setPrefix.

但是最好创建这样的根元素:

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

还要注意,将null传递给createElement是强制空指定空间的一种支持方式.在您的原始示例中,这将不起作用,因为您的文档元素通过将名称空间URI与前缀组合来有效地强制使用认命名空间.

原文地址:https://www.jb51.cc/java/120581.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐