【问题标题】:Copy certain nodes with Java使用 Java 复制某些节点
【发布时间】:2011-08-24 02:20:02
【问题描述】:

我正在尝试在 JAVA 中读取/复制 xml 文档的某个部分,然后将此部分另存为新的 xml 文档。因此,就像在下面的示例中您看到的学生信息和联系信息一样,我只想选择学生信息并复制整个区域,以便节点和元素。 我只能找到有关仅选择元素或仅选择节点的信息。

非常感谢您的帮助,谢谢。

<header>
<body>
    <studentinfo>
        <name>Student Name<name>
        <studentid>0987654321<studentid>
        <Location>USA<Location>
    <studentinfo>
    <contactinfo>
        <email>email@email.com<email>
        <address>somewhere 1<address>
        <postalcode>123456<postalcode>
    <contactinfo>
<body>
<header>

【问题讨论】:

  • 您使用什么来处理 XML(解析器、框架等)?
  • 您可以解析 xml 或使用 xptath 来获取您感兴趣的部分。

标签: java xml copy rft


【解决方案1】:

我要做一个很大的假设,那就是你使用的是org.w3c.dom.Document api。

这是一个两步过程:

Document doc = parse(xmlSource);

Document targetDoc = openTargetDoc();
Node copyTo = findWhereYouWantToCopyStuffTo(targetDoc);

// Find the node or nodes to want to copy.. could use XPath or some other search
NodeList studentinfoList = doc.getElementsByTagName("studentinfo");

// for each found... make a copy (via importNode) and attach to some point in the target doc
for( int i = 0; i < studnetinfoList.getLength(); i ++ ){
    Node n = studentinfoList.item(i);
    Node copyOfn = targetDoc.importNode(n,true);
    copyTo.appendChild(copyOfn);
}

如果这不是您要查找的内容,您可能需要添加更多详细信息,说明您希望复制的内容以及复制到何处、使用什么 api 等。

【讨论】:

  • 感谢我需要的信息
  • “findWhereYouWantToCopyStuffTo”方法到底是什么?
  • 如果您没有更具体地说明要将哪些节点复制到何处,则无法回答:).. 我假设您正在将节点复制到另一个文档。 . 所以 findWhereYouWantToCopyStuffTo() 应该找到目标文档中的位置并返回它。请注意,上述内容也可用于复制同一文档中的节点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-12
  • 2018-10-12
  • 1970-01-01
  • 2011-06-17
  • 1970-01-01
相关资源
最近更新 更多