У меня есть структура XML следующим образом:Удалить узел с помощью XPath
<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 = "https://stackoverflow.com/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: An attempt is made to reference a node in a context where it does not exist
.
возможно дубликат [Удаление узла из файла XML в Java] (http://stackoverflow.com/questions/19925255/delete-a-node-from -xml-file-in-java) –