如何从另一个文档的子集创建新文档?

时间:2010-06-24 12:00:12

标签: java xml dom

假设我们有一个表示以下XML的org.w3c.dom.Document:

<Fruits>
  <Apples>
    <Red/>
    <Green/>
  </Apples>
</Fruits>

如果我们知道文档总是包含只有一个孩子的<Fruits>根(在这种情况下是<Apples>,但孩子的名字通常是未知的),我们怎样才能让那个孩子新的org.w3c.dom.Document的根目录?换句话说,这个新文档应该代表以下XML:

<Apples>
  <Red/>
  <Green/>
</Apples>

我的问题是,当我尝试提取孩子时,我不能忘记它的父母(它仍记得它在原始文件中的位置)。

2 个答案:

答案 0 :(得分:2)

这样的事情:

    Node apples = doc.getFirstChild().getFirstChild(); 
            //or whatever is your way to find the node to copy
    Document newDocument = builder.newDocument();
    Node applesCopy = newDocument.importNode(apples, true);
    newDocument.appendChild(applesCopy);

基本上,您从旧文档中获取一个节点,将其导入新文档并将其附加到顶部。

答案 1 :(得分:1)

您提供的示例的可行替代方法是处理未解析的字符串并使用正则表达式来提取您想要的部分。

这不适合更复杂的处理。但它可能是简单案例中最简单,最有效的解决方案。