Jon*_*nas 2 java xml xml-namespaces xom
我正在使用XOM在Java中构建XML文档.
我创建了一个简单的XML文档,我想要一个XML命名空间.但是当我在第一个标签上设置名称空间时,在子项上设置了一个空名称空间xmlns="",如何摆脱这种行为?我只想要xmlns第一个标签.
我想要这个XML:
<request xmlns="http://my-namespace">
<type>Test</type>
<data>
<myData>test data</myData>
</data>
</request>
Run Code Online (Sandbox Code Playgroud)
但这是XOM输出的XML文档
<request xmlns="http://my-namespace">
<type xmlns="">Test</type>
<data xmlns="">
<myData>test data</myData>
</data>
</request>
Run Code Online (Sandbox Code Playgroud)
这是我的Java XOM代码:
String namespace = "http://my-namespace";
Element request = new Element("request", namespace);
Element type = new Element("type");
type.appendChild("Test");
request.appendChild(type);
Element data = new Element("data");
request.appendChild(data);
Element myData = new Element("myData");
myData.appendChild("test data");
data.appendChild(myData);
Document doc = new Document(request);
doc.toXML();
Run Code Online (Sandbox Code Playgroud)
这适合我.但是,我有点疑惑为什么这些Element对象不会继承父级的命名空间.(不是XML也不是XOM专家)
码:
String namespace = "http://my-namespace";
Element request = new Element("request", namespace);
Element type = new Element("type", namespace);
type.appendChild("Test");
request.appendChild(type);
Element data = new Element("data", namespace);
request.appendChild(data);
Element myData = new Element("myData", namespace);
myData.appendChild("test data");
data.appendChild(myData);
Document doc = new Document(request);
System.out.println(doc.toXML());
Run Code Online (Sandbox Code Playgroud)
输出:
<?xml version="1.0"?>
<request xmlns="http://my-namespace">
<type>Test</type>
<data>
<myData>test data</myData>
</data>
</request>
Run Code Online (Sandbox Code Playgroud)