加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

xml – 使用xpath删除节点

发布时间:2020-12-16 23:21:59 所属栏目:百科 来源:网络整理
导读:我有一个xml结构如下: a b foonull/foo /b b fooabc/foo /b b fooefg/foo /b/a 我正在使用org.w3c.dom.Document来更新节点.何时 foo有一个值null,我想删除 b foonull/foo/b 这可能吗?我知道我可以调用removeChild(childElement),但不知道如何指定删除上面
我有一个xml结构如下:

<a>
   <b>
      <foo>null</foo>
   </b>
   <b>
      <foo>abc</foo>
   </b>
   <b>
      <foo>efg</foo>
   </b>
</a>

我正在使用org.w3c.dom.Document来更新节点.何时< foo>有一个值null,我想删除

<b>
  <foo>null</foo>
</b>

这可能吗?我知道我可以调用removeChild(childElement),但不知道如何指定删除上面的特定嵌套元素.

更新:通过以下答案,我试过:

String query = "/a/b[foo[text() = 'null']]";
Object result = (xpath.compile(newQuery)).evaluate(doc,NODE);
NodeList nodes = (NodeList)result;
for (int i = 0; i < nodes.getLength(); i++)
{
    Node node = nodes.item(i);
    doc.removeChild(node);
}

我得到NOT_FOUND_ERR:尝试在不存在的上下文中引用节点.

解决方法

doc.removeChild(node);

因为您尝试删除的节点不是文档节点的子节点,它将不起作用,它是文档元素(a)的子节点,它本身是文档根节点的子节点.您需要在正确的父节点上调用removeChild:

node.getParentNode().removeChild(node);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读