首页 > 解决方案 > 如何使用 DOM Parser 在包含与节点名称相同的标记名的节点内复制元素

问题描述

我有一个输入 xml 文件,我需要复制里面的元素和标签,但问题是节点<Name>内部还有另一个标签。<Name>在这种情况下如何复制?

输入.xml

<?xml version="1.0" encoding="utf-8" ?>
 <data>
    <Name>
        <College name="test1">
            <Name>
                <dummyData1>dummy1</dummyData1>
                <dummyData2>dummy2</dummyData2>
            </Name>
        </College>
        <SomeData>SomeValue</SomeData>
    </Name>
    <SomeOtherTags>Not needed</SomeOtherTags>
    <Address>
        <Country name="test2">
            <City name = "city1">
                <zip>
                    <dummy3>dummy3</dummy3>
                </zip>
            </City>
        </Country>
    </Address>
 </data>

基础.xml

<?xml version="1.0" encoding="utf-8" ?>
 <data>
    <Name>
    </Name>
    <Address>
    </Address>
 </data>

这就是我所期待的

输出.xml

    <?xml version="1.0" encoding="utf-8" ?>
   <data>
    <Name>
        <College name="test1">
            <Name>
                <dummyData1>dummy1</dummyData1>
                <dummyData2>dummy2</dummyData2>
            </Name>
        </College>
    <SomeData>SomeValue</SomeData>
    </Name>
    <Address>
        <Country name="test2">
            <City name = "city1">
                <zip>
                    <dummy3>dummy3</dummy3>
                </zip>
            </City>
        </Country>
    </Address>
   </data>

添加缺少的代码,谢谢 Andreas

Document outputDoc = db.parse(baseXml);
Document inputDoc = db.parse(inputXml);
Node outputNameNode = outputDoc.getElementsByTagName("Name").item(0);
Node outputAddressNode =     outputDoc.getElementsByTagName("Address").item(0);
NodeList nameNodeList = inputDoc.getElementsByTagName("Name");
System.out.println(nameNodeList.getLength());

for (int i = 0; i < nameNodeList.getLength(); i++) {
    System.out.println(nameNodeList.item(i));
    Node outputNode = outputDoc.importNode(nameNodeList.item(i), true);
    outputNameNode.appendChild(outputNode);
}

标签: javaxmldomparser

解决方案


推荐阅读