在Java中使用DOM解析器创建新XML时,如何仅在根节点上添加名称空间。
预期的输出是这样的:
<root xmlns = "http://www.mynamespace.com/something/something">
<data1>
<parameter>
<name>test string</name>
<value>test string</value>
</parameter>
<parameter>
<name>test string</name>
<value>test string</value>
</parameter>
</data1>
<data2>
<parameter>
<name>test string</name>
<value>test string</value>
</parameter>
<parameter>
<name>test string</name>
<value>test string</value>
</parameter>
</data2></root>
我的代码是这样的:
Namespace ns = Namespace.getNamespace("http://www.mynamespace.com/something/something");
Element root = new Element("root",ns);
Document doc = new Document(root);
doc.setRootElement(root);
我出门是:
<root xmlns="http://www.mynamespace.com/something/something">
<data1 xmlns="">
<parameter>
<name>test string</name>
<value>test string</value>
</parameter>
<parameter>
<name>test string</name>
<value>test string</value>
</parameter>
</data1>
<data2 xmlns="">
<parameter>
<name>test string</name>
<value>test string</value>
</parameter>
<parameter>
<name>test string</name>
<value>test string</value>
</parameter>
</data> </root>
那就是我不希望
<data1>
和<data2>
的xmlns =“”谢谢
最佳答案
当前正面临相同的问题,我正在使用XOM解析器
Element root = new Element("organization", "http://schemas.test");
Document document = new Document(root);
Element element = new Element("Email");
element.appendChild("[email protected]");
root.appendChild(element);
System.out.print(document.toXML());
输出是
<?xml version="1.0"?>
<organization xmlns="http://schemas.test">
<Email xmlns="">[email protected]</Email>
</organization>
甚至我也希望名称空间仅出现在根元素组织中。
为此,将相同的名称空间应用于根元素,也应用于子元素。因此它们将与根位于同一名称空间中。
Element root = new Element("organization", "http://schemas.test");
Document document = new Document(root);
Element element = new Element("Email","http://schemas.test");
element.appendChild("[email protected]");
root.appendChild(element);
System.out.print(document.toXML());
这将产生xml,如下所示,只有具有命名空间的root元素-
<?xml version="1.0"?>
<organization xmlns="http://schemas.test">
<Email>[email protected]</Email>
</organization>