java中使用DOM删除xml文件中的元素时的问题?

  • 在学习java的DOM解析的时候,发现一个问题,就是在使用循环的方式使用removeChild()这个方法删除元素,发现只能够删除第一个元素,其他同名称的元素无法删除?百度谷歌也没找到答案,特来请教各位大神,如有老师肯指教,感激不尽.

具体问题如下

  • 原xml文件内容
<?xml version="1.0" encoding="utf-8"?>
<shop>
	<pen>
		<type>钢笔</type>
		<manufacturers id="9567">长城牌</manufacturers>
		<tradePrice>0.5</tradePrice>
		
	</pen>
	<book>
		<name>新的世界,新的你</name>
		<year>3</year>
		<price >56.6</price>
	</book>
	<book>
		<name>java入门到跑路</name>
		<year>111</year>
		<price >100</price>
	</book>
</shop>

删除所有同名称的元素

  • 例如,删除xml文件中所有<year>元素
    • 使用DocumentBuilder类将xml文件读取到内存中,形成dom树
        //使用DocumentBuilder解析原xml文件,将xml文件中的数据加载到内存中,形成DOM树
        DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
        File xmlFile = new File("e:"+ File.separator+"testWeb"+File.separator+"info.xml");
        Document xmlDoc = docBuilder.parse(xmlFile);
  • 找到DOM树中所有"year"元素节点
        //得到要修改的元素节点
        NodeList yearElements = xmlDoc.getElementsByTagName("year");
  • 循环删除每个"year"元素节点
        //修改xml元素
        //得到要修改的元素节点
        for (int i = 0; i < yearElements.getLength(); i++) {
            //找到当前"year"元素节点的父节点,然后使用父节点删除所有"year"子节点
            Node temp = yearElements.item(i);
            temp.getParentNode().removeChild(temp);
        }
  • 删除元素之后,要将当前的DOM树结构,覆盖掉原来的xml文件的DOM树
    • 要将DOM树从内存中输出到文件,需要用的是Transformer类进行操作

        //将修改后的DOM树,覆盖到原xml文件中
        TransformerFactory tfFactory = TransformerFactory.newInstance();
        Transformer transformer = tfFactory.newTransformer();
        transformer.transform(new DOMSource(xmlDoc),new StreamResult(xmlFile));
  • 运行结果正常.
  • 查看源文件

在这里插入图片描述

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:技术黑板 设计师:CSDN官方博客 返回首页
评论 4

打赏作者

{[("青椒盖饭")]}

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值