1

先给大家看一下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>.

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

4

1 回答 1

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);

(上面的代码不是用来编译的)

于 2011-06-14T08:09:10.547 回答