我正在为我正在开发的 RMI 程序创建 XML 作为节点,但我遇到了一个问题。我可以使用 DOM 创建 XML,但我很难将命名空间和版本添加到 XML 的顶部。我尝试过使用 setAttribute 和 setAttributeNS 但目前不知道还能做什么。
创建元素的java代码是:
DocumentBuilderFactory dbfac = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = dbfac.newDocumentBuilder();
Document doc = docBuilder.newDocument();
Node root = doc.createElement("Request");
doc.appendChild(root);
//code ommited
我目前得到的结果是:
<Request>
<Identification>
<UserID>user</UserID>
<Password>pass</Password>
</Identification>
</Request>
在请求部分,我需要它看起来像:
<Request xsi:noNamespaceSchemaLocation="URL" Version="1.0">
任何有助于解决此问题的帮助将不胜感激!
谢谢
最佳答案
我想你会想要这样的东西:
...
Element root = doc.createElement("Request");
root.setAttributeNS("http://www.w3.org/2001/XMLSchema-instance", "xsi:noNamespaceSchemaLocation", "URL");
root.setAttribute("Version", "1.0");
doc.appendChild(root);
...
将 root
定义为 Element
将为您提供 .setAttribute* 方法。
这会给你
<Request Version="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="URL"/>
我知道其中包含更多内容,但需要 xmlns:xsi 属性才能定义 xsi 命名空间。
关于Java DOM,命名空间/版本问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6371825/