Предполагая, что у вас уже есть узел, который вы хотите удалить:
Document document = node.getDocument();
node.detach();
XMLWriter writer = new XMLWriter(new FileWriter(document.getPath() + document.getName()), OutputFormat.createPrettyPrint());
writer.write(document);
writer.close();
опущен Оператор примерки загвоздка.
Краткое объяснение:
- Получение документа и хранить его в локальной переменной необходимо, потому что после отсоединения узла, вы не можете получить документ, вызывающему node.getDocument()
- вызывающем открепление() на узле будет удалить узел из объекта документа (не из файла)
- создания XMLWriter с OutputFormat.createPrettyPrint() необходим, если вы не хотите все пустые строки в документе после
Для более полного примера, вот тест JUnit:
@Test
public void dom4j() throws DocumentException, IOException {
String absolutePath = Paths.get(PATH_TO_XML).toAbsolutePath().toString();
SAXReader reader = new SAXReader();
Document document = reader.read(absolutePath);
Node node = document.selectSingleNode(XPATH_TO_NODE);
node.detach();
XMLWriter writer = new XMLWriter(new FileWriter(absolutePath), OutputFormat.createPrettyPrint());
writer.write(document);
writer.close();
}
Для больше информации о dOM4J см: http://dom4j.sourceforge.net/dom4j-1.6.1/guide.html
и дополнительной информации для синтаксиса XPath: http://www.w3schools.com/xsl/xpath_syntax.asp
Насколько я ценю новые решения: это не ответ на вопрос. Это ответ на вопрос ** Как удалить узел из файла XML с помощью XPath и vtd-xml? ** или заголовок ** Удалить узел из XML-файла (XPATH, VTD-XML, JAVA) ** –