2011-05-12 41 views
4

我试图在JAVA中读取/复制xml文档的某个部分,然后将此部分保存为新的xml文档。所以就像下面的例子中你看到的是studentinfo和联系信息,我只想选择studentinfo并复制整个区域以便节点和元素。 我只能找到有关仅选择元素或仅选择节点的信息。使用Java复制某些节点

所以帮助将不胜感激,谢谢。

<header> 
<body> 
    <studentinfo> 
     <name>Student Name<name> 
     <studentid>0987654321<studentid> 
     <Location>USA<Location> 
    <studentinfo> 
    <contactinfo> 
     <email>[email protected]<email> 
     <address>somewhere 1<address> 
     <postalcode>123456<postalcode> 
    <contactinfo> 
<body> 
<header> 
+0

你用什么来处理XML(解析器,框架等)? – 2011-05-12 12:37:20

+0

您可以解析xml或使用xptath获取您感兴趣的部分。 – Kaj 2011-05-12 12:42:38

回答

9

我打算做一个大的假设,那就是你使用的是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等。

+0

Thanx是我需要的信息 – Eve 2011-05-12 13:39:03

+0

“findWhereYouWantToCopyStuffTo”方法究竟是什么? – Eve 2011-05-12 13:59:45

+1

与你是一个更具体的关于你想复制哪些节点,无法回答的地方:)我假设你正在复制节点到另一个文档..所以findWhereYouWantToCopyStuffTo()应该找到目标文档中的位置并将其返回。请注意,上述内容也可用于复制同一文档中的节点。 – 2011-05-12 15:01:20