让我先向您展示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实现它?
答案 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);
(上面的代码不是为了编译)