使用JDOM API删除XML属性?

问题描述:

我有一个像下面使用JDOM API删除XML属性?

例一JDOM元素:我想转换,如XML(JDOM元素)

<Details> 
<Uniqueno>11111</Uniqueno> 
<ROWSET name="Persons"> 
<ROW num="1"> 
<Name>60821894</Name> 
<Age>938338789</Age> 
</ROW> 
<ROW num="2"> 
<Name>60821894</Name> 
<Age>938338789</Age> 
</ROW> 
</ROWSET> 
</Details> 

<Details> 
<Uniqueno>11111</Uniqueno> 

<ROW num="1"> 
<Name>60821894</Name> 
<Age>938338789</Age> 
</ROW> 
<ROW num="2"> 
<Name>60821894</Name> 
<Age>938338789</Age> 
</ROW> 

</Details> 

注:ROWSET元素被删除

我想删除元素使用J DOM API?

+0

行集不是一个属性。这是一个元素。为了将其删除,您必须首先将其所有内容保存到某处以便稍后恢复。 –

你已经试过了什么?

  1. 查找Details标签(它是文档根)
  2. 查找ROWSET标签
  3. 用于ROWSET呼叫detach()方法的节点上和append()此分离节点到Details标签中的每个ROW标签。
  4. 删除ROWSET标记。

随着一些示例代码:

// 1 
Element details = doc.getRootElement(); 
// 2 
Element rowset = details.getChild("ROWSET"); 
// 3 
for (Element row: rowset.getChildren()) { 
    Element r = row.detach(); 
    details.appendChild(r); 
} 
// 4 
details.removeChild(rowset); 

没有测试,更多信息请检查JDOM API

+0

我可以获得一些示例代码吗? –

+0

我添加了一些代码示例 – Alex

如果您使用JDOM 2.0.x的,你可以这样做:如果您使用JDOM 1.x中,你可以做类似的事情,但更多的石膏

for (Element rowset : details.getChildren("ROWSET")) { 
    rowset.detach(); 
    for (Content c : rowset.getContent()) { 
     details.addContent(c.detach()); 
    } 
} 

....

+0

感谢上述发布,但我仍然无法使用JDOM 1.x使用detach或remove进行分离(删除)。如何在版本1.x中删除? –

+0

你可以在1.x中分离,你只需要有正确的强制转换... http://jdom.org/docs/apidocs.1.1/org/jdom/Content.html#detach%28%29 – rolfl