【问题标题】:Remove XML attribute using JDOM API?使用 JDOM API 删除 XML 属性?
【发布时间】:2012-05-09 11:01:53
【问题描述】:

我有一个像下面这样的 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 移除元素?

【问题讨论】:

  • 行集不是属性。它是一个元素。要删除它,您必须先将其所有内容保存在某个地方以便稍后恢复。

标签: java xml jdom


【解决方案1】:

你已经尝试了什么?

  1. 找到Details标签(即文档根目录)
  2. 找到ROWSET标签
  3. 对于ROWSET 中的每个ROW 标记,调用节点上的detach() 方法,并将append() 这个分离的节点调用到Details 标记。
  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

【讨论】:

    【解决方案2】:

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

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

    如果您使用的是 JDOM 1.x,您可以做类似的事情,但需要更多的演员表......

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-09
    • 1970-01-01
    • 2022-09-23
    • 2013-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多