gpt4 book ai didi

java - 如果属性具有特定值,则删除 XML 节点

转载 作者:行者123 更新时间:2023-11-30 03:40:25 24 4
gpt4 key购买 nike


我需要在 XML 中搜索某些属性,如果找到该属性则删除其节点。例如,我想删除属性以“#false”开头的书籍节点

<catalog>
<book id="bk101" available="#false">
<author>Gambardella, Matthew</author>
<title>XML Developer's Guide</title>
<genre>Computer</genre>
<price>44.95</price>
<publish_date>2000-10-01</publish_date>
<description>An in-depth look at creating applications
with XML.</description>
</book>
</catalog>

到目前为止,我已经能够使用 XPath 表达式捕获所有“#false”元素:

String search = "//@*[starts-with(.,'#false')]";
NodeList nodeList = (NodeList) xPath.
compile(search).evaluate(doc, XPathConstants.NODESET);

((Node)nodeList.item(0)).getParent(); // NULL!!

但是问题是“可用”元素的父节点为空,所以我找不到删除整个“书”节点的方法。有什么帮助吗?

最佳答案

对于属性,使用 Attr#getOwnerElement() 检索包含该属性的元素:

NodeList nodeList = (NodeList) xPath.
compile(search).evaluate(doc, XPathConstants.NODESET);

Node attrNode = nodeList.item(0);
if(attrNode.getNodeType() == Node.ATTRIBUTE_NODE) {
Attr attr = (Attr) attrNode;

Element bookElement = attr.getOwnerElement();
...
}

关于java - 如果属性具有特定值,则删除 XML 节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26930380/

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