如何设置多个命名空间,其中一个没有前缀(JDom)

时间:2016-02-23 10:51:07

标签: java xml namespaces jdom

我需要设置名称空间,希望有人可以帮助我。

这就是我需要的:

<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

我尝试这样做:

            Namespace ns1 = Namespace.getNamespace("urn:iso:std:iso:20022:tech:xsd:pain.001.001.03");
        Namespace ns2 = Namespace.getNamespace("xsi", "http://www.w3.org/2001/XMLSchema-instance");
        Element root = new Element("Document");
        root.addNamespaceDeclaration(ns2);
        root.addNamespaceDeclaration(ns1);

但我得到了这个例外:

  

命名空间xmlns =&#34; urn:iso:std:iso:20022:tech:xsd:pain.001.001.03&#34;   无法作为名称空间添加到&#34; Document&#34;:名称空间前缀   &#34;&#34;与元素名称空间前缀

发生冲突

由于

1 个答案:

答案 0 :(得分:2)

使用

Namespace ns1 = Namespace.getNamespace("urn:iso:std:iso:20022:tech:xsd:pain.001.001.03");
Namespace ns2 = Namespace.getNamespace("xsi", "http://www.w3.org/2001/XMLSchema-instance");
Element root = new Element("Document", ns1);
root.addNamespaceDeclaration(ns2);

由于您已定义默认命名空间,因此在创建Element时必须使用它。否则JDOM抱怨该元素没有命名空间,同时有一个默认的命名空间声明。