加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

从XML文件中删除节点(DOM4J,JAVA)

发布时间:2020-12-16 23:03:38 所属栏目:百科 来源:网络整理
导读:由于与此主题相关的所有其他问题都涉及特定的编程问题(例如,“当我尝试此操作时,我得到NullPointerException”)并且答案正在修复编程错误,以下是对以下问题的简单解决方案: 如何使用DOM4J从XML文件中删除节点? 解决方法 假设您已经拥有要删除的节点: Docu
由于与此主题相关的所有其他问题都涉及特定的编程问题(例如,“当我尝试此操作时,我得到NullPointerException”)并且答案正在修复编程错误,以下是对以下问题的简单解决方案:

如何使用DOM4J从XML文件中删除节点?

解决方法

假设您已经拥有要删除的节点:

Document document = node.getDocument();

  node.detach();

  XMLWriter writer = new XMLWriter(new FileWriter(document.getPath() + document.getName()),OutputFormat.createPrettyPrint());
  writer.write(document);
  writer.close();

try-catch语句被省略.

简短说明:

>需要获取文档并将其存储在本地变量中,
因为在分离节点后,您无法获取文档
调用node.getDocument()
>在节点上调用detach()将从文档对象中删除节点(而不是从文件中删除)
>如果您之后不希望文档中有任何空白行,则需要使用OutputFormat.createPrettyPrint()创建XMLWriter

有关更完整的示例,请参阅以下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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读