使用JDOM API删除XML属性?

时间:2012-05-09 11:01:54

标签: java xml jdom

我有一个像以下

的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元素

我想使用JDOM API删除元素吗?

2 个答案:

答案 0 :(得分:1)

你有什么尝试过?

  1. 找到Details标记(文档根目录)
  2. 找到ROWSET代码
  3. ROW中的每个ROWSET代码调用节点上的detach()方法,并将append()此分离节点调用Details代码。
  4. 删除ROWSET标记。
  5. 使用一些示例代码:

    // 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

答案 1 :(得分:1)

如果您使用的是JDOM 2.0.x,则可以执行以下操作:

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

如果你正在使用JDOM 1.x,你可以做类似的事情,但有更多的演员......