如何设置多个命名空间,其中一个没有前缀(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 抱怨该元素不在任何命名空间中,同时具有默认的命名空间声明。
我需要设置一个命名空间,希望有人能帮助我。
这就是我需要的:
<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 抱怨该元素不在任何命名空间中,同时具有默认的命名空间声明。