gpt4 book ai didi

java - JDOM 从根中删除元素

转载 作者:行者123 更新时间:2023-11-30 07:44:01 27 4
gpt4 key购买 nike

我无法从根元素中删除元素。下面是xml的例子

 <ADMIN-DATA>
<DATA-DECLARATION ID="Hi"> </DATA-DECLARATION>
<DATA ID="Hi">
<DATA-DECLARATION-REF ID-REF="Hi"> </DATA-DECLARATION-REF>
<DATA ID="Hi">
<DATA-DECLARATION ID="Delete"> </DATA-DECLARATION>
</DATA>
</DATA>
</ADMIN-DATA>

我要删除

<DATA-DECLARATION ID="Delete"> </DATA-DECLARATION>

下面的 JDOM 代码

Element root = document.getRootElement();
String id = null;
boolean check = false;
String idRef = null;
ElementFilter filter = new org.jdom2.filter.ElementFilter(
"DATA-DECLARATION");
ElementFilter filter2 = new org.jdom2.filter.ElementFilter(
"DATA-DECLARATION-REF");

for (Element dataDecId : root.getDescendants(filter))
{
check = false;
id = dataDecId.getAttributeValue("ID");
for (Element dataDecIdRef : root.getDescendants(filter2))
{
idRef = dataDecIdRef.getAttributeValue("ID-REF");

if (null != idRef && idRef.equalsIgnoreCase(id))
{
check = true;
break;
}
}
if (!check)
{
root.removeContent(dataDecId);

}
}

上面 root.removeContent(dataDecId);不管用。纠正我。

最佳答案

请注意<DATA-DECLARATION ID="Delete"> </DATA-DECLARATION>不是根元素的子元素....它是 DATA 的子元素元素又是 DATA 的子元素最终是 ADMIN-DATA 的子元素元素。

您不能要求根元素删除 DATA-DECLARATION ID="Delete"因为它不是直接子代。

请注意, child 本身知道它的位置,因此,更简单的方法是更改​​ root.removeContent(dataDecId)只是dataDecId.detach()

关于java - JDOM 从根中删除元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34182150/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com