Учитывая следующий сценарий, где xml, Geography.xml выглядит как -
<Geography xmlns:ns="some valid namespace">
<Country>
<Region>
<State>
<City>
<Name></Name>
<Population></Population>
</City>
</State>
</Region>
</Country>
</Geography>
и следующий пример кода Java -
InputStream is = new FileInputStream("C:\\Geography.xml");
SAXBuilder saxBuilder = new SAXBuilder();
Document doc = saxBuilder.build(is);
XPath xpath = XPath.newInstance("/*/Country/Region/State/City");
Element el = (Element) xpath.selectSingleNode(doc);
boolean b = doc.removeContent(el);
Метод removeContent()
не удаляет Элемент City
из списка содержимого doc
. Значение b составляет false
Я не понимаю, почему он не удаляет Элемент, я даже пытался удалить элементы Name
& Population
из xml, просто чтобы посмотреть, была ли это проблема, но, очевидно, это не так.
Другой способ, которым я пытался, я не знаю, почему я знаю, что он существенно не отличается, все же просто ради, был использовать Parent
-
Parent p = el.getParent();
boolean s = p.removeContent(new Element("City"));
В чем может быть проблема? а возможное решение? и если кто-то может поделиться реальным поведением метода removeContent()
, я подозреваю, что это связано с отношениями родитель-ребенок.