Javaweb学习笔记之XML(四):Dom4J删除XML文档的标签和属性


/*
 * 删除 标签、属性
 */
@Test
public void test4() throws Exception{
	// 读取 XML 文档,返回 Document 对象
	Document doc = new SAXReader().read("./src/contact.xml");
	
	/*
	 * 删除标签:1、得到标签对象;2、删除标签
	 */
	Element ageElem = doc.getRootElement().element("contact").element("age"); 	// 1、得到标签对象
	// 方法一:自己删除自己
//		ageElem.detach();
	// 方法二:通过父标签删除子标签
	ageElem.getParent().remove(ageElem);
	
	/*
	 * 删除属性:1、得到属性对象;2、删除属性
	 */
	Element contactElem = (Element)doc.getRootElement().elements().get(1);
	Attribute attr = contactElem.attribute("id");
//		attr.detach(); 					// 删除属性(自己删除自己)
	attr.getParent().remove(attr); 	// 删除属性(通过父节点删除子节点)
	
	// 设置 输出位置
	FileOutputStream out = new FileOutputStream("D:/contact.xml");
	// 设置输出格式
	OutputFormat format = OutputFormat.createPrettyPrint();
	// 设置输出编码方式
	format.setEncoding("utf-8");
	// 创建输出对象
	XMLWriter writer = new XMLWriter(out, format);
	// 输出
	writer.write(doc);
	// 关闭流
	writer.close();
}

其中原文件 ./src/contact.xml 为:

<?xml version="1.0" encoding="utf-8"?>
<contactList>
	<contact id="001" name="eric">
		<name>张三</name>
		<age>20</age>
		<phone>134222223333</phone>
		<email>zhangsan@qq.com</email>
		<qq>432221111</qq>
	</contact>
	<contact id="002">
		<name>李四</name>
		<age>20</age>
		<phone>134222225555</phone>
		<email>lisi@qq.com</email>
		<qq>432222222</qq>
	</contact>
	<abc></abc>
</contactList>

 修改之后的 D:/contact.xml 为:

<?xml version="1.0" encoding="utf-8"?>

<contactList> 
  <contact id="001" name="eric"> 
    <name>张三</name>  
    <phone>134222223333</phone>  
    <email>zhangsan@qq.com</email>  
    <qq>432221111</qq> 
  </contact>  
  <contact> 
    <name>李四</name>  
    <age>20</age>  
    <phone>134222225555</phone>  
    <email>lisi@qq.com</email>  
    <qq>432222222</qq> 
  </contact>  
  <abc/> 
</contactList>

Dom4J下载地址:https://download.csdn.net/download/qq_29331365/11164486

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值