在 java 中创建 xml 时仅在根节点添加命名空间

Add namespace only at root node while creating xml in java

在 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>

那是我不想 xmlns="" 用于 <data1><data2>

谢谢

目前遇到同样的问题,我正在使用 XOM 解析器

Element root = new Element("organization", "http://schemas.test");
    Document document = new Document(root); 
    Element element = new Element("Email");
    element.appendChild("test@test.com");
    root.appendChild(element);
    System.out.print(document.toXML());

输出为

     <?xml version="1.0"?>
        <organization xmlns="http://schemas.test">
    <Email xmlns="">test@test.com</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("test@test.com");
        root.appendChild(element);
System.out.print(document.toXML());

这会产生如下 xml,只有根元素具有命名空间-

    <?xml version="1.0"?>
    <organization xmlns="http://schemas.test">
<Email>test@test.com</Email>
</organization>