繁体   English   中英

使用文档类在Java中合并XML文件

[英]Merging xml files in java using document class

我的要求是合并多个xml文件,其中每个文件将在while循环中生成,并将合并的xml文件合并到根xml。 我尝试遵循以下结构,但无法正常工作。 任何人都可以建议这是正确的方法。 我也不能选择任何xpath选项,因为每次将创建的xml都是动态的...但是名称空间将是相同的。

                public Document xmlCreation(){
            Document document1 = createDocument(); 
            Node node1 = document1.getDocumentElement(); //Root node
            //xml root node created

            Document document2 = createDocument();


            while(condition)
            {
            // some steps
            Document document3 = createDocument();
            Node node3 = document3.getDocumentElement();  //child node

            // xml created

            node3.appendChild(document2);

            }
            Node node2 = document2.getDocumentElement();
            addChildNode(document1,node2);

            return(document1);

            }

先感谢您 !!

您不能从另一个文档添加Node 您有两种选择:

  1. 尝试使用Document.adoptNode将所有者文档更改为目标文档。 如果失败(即返回null ),则只有选项2。
  2. 使用Document.importNode创建适合于目标文档/ DOM实现的节点的副本。

请记住,即使那样,您也无法像在示例代码中一样尝试将Document添加到另一个Node 您可以使用上面的两个选项将源文档的子节点添加到目标节点。 通常,您希望将单个根文档元素添加到另一个元素。

尝试创建一个resultDocument并使用acceptNode()。 这会将节点从旧文档移到新的resultDocument。 javadoc

尝试采用另一个文档到此文档的节点。 如果支持,它将更改源节点,其子节点以及附加的属性节点(如果有)的ownerDocument。 如果源节点具有父节点,则首先将其从其父节点的子列表中删除。 这有效地允许将子树从一个文档移动到另一个文档(与importNode()不同,后者创建源节点的副本而不是移动它)。 失败时,应用程序应改用Document.importNode()。

使用document.importNode(...)

请参阅如何将一个xml文档的节点复制到另一个? http://docs.oracle.com/javase/7/docs/api/org/w3c/dom/Document.html#importNode(org.w3c.dom.Node,%20boolean)了解更多详细信息。

同样,在导入节点之后,您应该(仍然)将其作为子节点添加到根节点。

通常,不能将一个DOM文档中的节点直接插入到另一文档中。 您需要对它们运行importNode操作以制作属于新Document的副本,然后插入这些副本。 请参阅DOM FAQ中有关ownerDocument问题的讨论,以获取关于为什么和如何的更多信息,并参阅DOM Recommendation对文档节点的定义中对importNode的讨论。

如果您在使用importNode之前的1级DOM中工作,则必须实现自己的“创建新Document拥有的等效节点”例程。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM