如何将节点从xml文档附加到现有的xml文档

hud*_*udi 4 java xml dom

我的a.xml中有锦标赛列表:

<tournaments>

    <tournament>
        <name>a</name>
    </tournament>

    <tournament>
        <name>b</name>
    </tournament>

    <tournament>
        <name>c</name>
    </tournament>

</tournaments>
Run Code Online (Sandbox Code Playgroud)

广告然后我在b.xml中有一个锦标赛

<tournament>
    <name>d</name>
</tournament>
Run Code Online (Sandbox Code Playgroud)

我怎样才能将b.xml文件作为另一个锦标赛的文件?

所以这就是我想要的:

<tournaments>

    <tournament>
        <name>a</name>
    </tournament>

    <tournament>
        <name>b</name>
    </tournament>

    <tournament>
        <name>c</name>
    </tournament>

    <tournament>
        <name>d</name>
    </tournament>

</tournaments>
Run Code Online (Sandbox Code Playgroud)

sva*_*aor 6

  1. 获取节点从第一添加文件 ;
  2. 从第一个Document到第二个Document采用Node(参见Document.adopt(Node));
  3. 将所采用的节点作为子节点添加到第二个Document结构中(请参阅Node.appendChild(Node).

更新.码:

DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = documentBuilderFactory.newDocumentBuilder();

Document tournament = builder.parse(new File("b.xml"));
Document tournaments = builder.parse(new File("a.xml"));

Node tournamentElement = tournament.getFirstChild();
Node ndetournament = tournaments.getDocumentElement();
Node firstDocImportedNode = tournaments.adoptNode(tournamentElement);
ndetournament.appendChild(firstDocImportedNode);

TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.transform(new DOMSource(tournaments), new StreamResult(System.out));
Run Code Online (Sandbox Code Playgroud)

结果:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<tournaments>
    <tournament>
        <name>a</name>
    </tournament>

    <tournament>
        <name>b</name>
    </tournament>

    <tournament>
        <name>c</name>
    </tournament>
<tournament>
    <name>d</name>
</tournament>
</tournaments>
Run Code Online (Sandbox Code Playgroud)