如何仅使用XOM在第一个标签上设置命名空间?

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)

Cat*_*hwa 8

这适合我.但是,我有点疑惑为什么这些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)

  • 来自javadoc元素(字符串)"在无命名空间中创建新元素" (2认同)