【问题标题】:Java DOM, namespace / version problemJava DOM、命名空间/版本问题
【发布时间】:2011-09-16 08:11:55
【问题描述】:

我正在为我正在开发的 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">

我们将不胜感激帮助解决此问题!

谢谢

【问题讨论】:

标签: java xml dom namespaces


【解决方案1】:

我想你会想要这样的东西:

...
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 命名空间。

【讨论】:

  • 谢谢,这就是我之前尝试的方法,但我使用的是 Node root 而不是 Element root,它会抛出错误。现在说得通了!
猜你喜欢
  • 1970-01-01
  • 2023-03-20
  • 1970-01-01
  • 2019-11-30
  • 2014-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多