Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如果属性具有特定值,则删除XML节点_Java_Xml_Dom_Xpath - Fatal编程技术网

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

Java 如果属性具有特定值,则删除XML节点,java,xml,dom,xpath,Java,Xml,Dom,Xpath,我需要在XML中搜索某些属性,如果找到该属性,则删除其节点。例如,我想删除属性以“#false”开头的book节点 但是问题是“available”元素的父节点为null,因此我无法找到删除整个“book”节点的方法。有任何帮助吗?对于属性,请使用Attr\getownerrement()检索包含属性的元素: NodeList nodeList = (NodeList) xPath. compile(search).evaluate(doc, XPathConstant


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


但是问题是“available”元素的父节点为null,因此我无法找到删除整个“book”节点的方法。有任何帮助吗?

对于属性,请使用
Attr\getownerrement()
检索包含属性的元素:

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();
    ...
}

您可以使用这个xpath。。它将与book元素本身匹配

//*[@*[starts-with(.,'#false')]]

我希望这能有所帮助

谢谢!正是我要找的!
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();
    ...
}
//*[@*[starts-with(.,'#false')]]