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

How to set multiple Namespace, one of them without prefix (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);

但是我得到这个例外:

The namespace xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03" could not be added as a namespace to "Document": The namespace prefix "" collides with the element namespace prefix

谢谢

使用

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 抱怨该元素不在任何命名空间中,同时具有默认的命名空间声明。