java jdom xml复制一段xml

时间:2011-04-24 13:38:07

标签: java xml jdom

让我先向您展示xml结构:

<config>

   <engine>
     <eid>1</eid>
     <somechild>text</somechild>
     <somemodechild>
       <subchild>subchbild</subchild>
     <somemorechild>
   </engine>
     <eid>1</eid>
     <somechild>text</somechild>
     <somemodechild>
       <subchild>subchbild</subchild>
     <somemorechild>
   </engine>
   <engine>
     <eid>1</eid>
     <somechild>text</somechild>
     <somemodechild>
       <subchild>subchbild</subchild>
     <somemorechild>
   </engine>
   </engine>
     <eid>1</eid>
     <somechild>text</somechild>
     <somemodechild>
       <subchild>subchbild</subchild>
     <somemorechild>
   </engine>
   <engine>
     <eid>1</eid>
     <somechild>text</somechild>
     <somemodechild>
       <subchild>subchbild</subchild>
     <somemorechild>
   </engine>

</config>

这里<config>是根元素。我必须创建一个GUI来编辑xml元素。我已经完成了它,使用JSP并为同一页面中的每个<engine>创建了一个GUI,然后每个用户都可以编辑特定的<engine>,然后保存<config>个元素,以及保存对特定<engine>标记的更改,我使用eid来隔离特定的<engine>

现在,我想在一个单独的xml文件中重写正在编辑的特定<engine>。如何使用jdom实现它?

1 个答案:

答案 0 :(得分:0)

不确定我是否正确理解您的要求: 您在上面发布了一个xml文件(文件A),另一个xml文件(文件B)只包含一个引擎节点。

如果文件A中有唯一的ID(eid?),则将其解析到DOM中,然后替换eid与文件B中的eid匹配的节点。

要在文件A中找到与文件B中的eid匹配的引擎,可以使用XPath。

Node aEID = xp.evaluate("/config/engine[eid='3']"); 
Node bEID = docB.getRoot();

然后你将从你的第一个DOM中删除aEID

docA.remove(aEID);

并添加bEID

docA.getRoot().add(bEID);

(上面的代码不是为了编译)