使用DOM4J读取和维护XML数据

这篇博客介绍了如何使用DOM4J进行XML数据的读取和维护,包括DOM4J的基本介绍、读写机制、常用API以及解析和保存XML的步骤。重点讲解了Document、Element和Attribute对象的使用,并提供了操作XML属性的方法补充和解析XML的实例。

笔记目录:


1.了解XML解析

2.使用DOM读取和维护XML数据

3.使用DOM4J读取和维护XML数据


1.DOM4J介绍

 

2. DOM4J读写机制

 

3. DOM4J常用API

DOM4J的主要接口都定义在org.dom4j这个包里

 

4.DOM4J解析XML的步骤

 

5. DOM4J保存XML的步骤

如果XML文档为全英文,保存XML可以简化:

XMLWriter writer = new XMLWriter (new FileWriter("XML文件"));
writer.write(Document对象);
writer.close();

 

6.使用DOM4J操作XML时主要使用的对象及其方法

6.1 Document对象

 

6.2 Element对象

 

6.3 Attribute对象

 

7. 常用方法补充

方法名描述
Element元素对象.setText()设置元素的值
Element元素对象.setTextContent()设置元素的值,和setText()效果一样

取标签元素的值补充:

取标签元素得值有两种思路,1.先attribute("name")取得标签元素中name属性的对象,然后再getText()来获取该属性元素的值

                                             2.使用attributeValue("属性名"),直接用标签元素调用该方法获取其属性名对应值

设置属性的值补充:

设置属性的值有两种思路,1.先attribute("name")取得标签元素中name属性的对象,然后再setText()来设置该属性元素的值

                                         2.使用setAttributeValue("属性名","值"),直接用标签元素调用该方法设置其属性名和其对应值

 

8. 解析读取XML文档思路

DOM4J不像DOM一样直接获取整个DOM树,想读取哪个标签的内容都可以直接访问到,DOM4J需要一层一层的读取来访问这些数据

 

9.DOM4J解析XML实例

代码:

public class DOM4J解析XML {
	public static void main(String[] args) throws DocumentException, IOException {
		//创建解析器
		SAXReader saxReader=new SAXReader();
		//加载指定XML文件
		Document doc=saxReader.read("手机信息.xml");
		//获得根标签
		Element root=doc.getRootElement();
		
		//解析XML信息
		System.out.println(doc.asXML());
		/*List<Element> brands=root.elements("Brand"); 
		for (Element element : brands) {
			//element.attribute("name").getValue();
			String name=element.attributeValue("name");
			
			List<Element> types=element.elements("Type");
			for (Element type : types) {
				String typeName=type.attributeValue("name");
				String price=type.getTextTrim();
				System.out.println("品牌:"+name+" 类型:"+typeName+" 价格:"+price);
			}
		}*/
		
		//添加节点:
		Element newBrand=root.addElement("Brand");//<Brand></Brand>
		newBrand.setAttributeValue("name", "小米");//<Brand name="小米"></Brand>
		Element newType=newBrand.addElement("Type");//<Brand name="小米"><Type></Type></Brand>
		newType.setAttributeValue("name", "mi10");//<Brand name="小米"><Type name="mi10"></Type></Brand>
		newType.setText("1999元");//<Brand name="小米"><Type name="mi10">1999元</Type></Brand>
		
		//修改节点:
		newType.setAttributeValue("name", "mi11");
		newType.setText("3999元");
		//newBrand.remove(newType);
		newType.getParent().remove(newType);
		
		//删除节点:
		newType.remove(newType.attribute("name"));
		newType.setText("");//remove(Text对象);
		
        //保存XML文件
		OutputFormat format=OutputFormat.createPrettyPrint();
		format.setEncoding("UTF-8");
		XMLWriter  xmlWriter=new XMLWriter(new FileOutputStream("新手机信息.xml"), format);
		xmlWriter.write(doc);
		xmlWriter.close();
	}
}

 

XML文件:

<!-- 手机信息.xml -->
<?xml version="1.0" encoding="UTF-8" ?>
<PhoneInfo>
	<Brand name="华为">
	    <Type name="P90">5000元</Type>
	</Brand>
	<Brand name="苹果">
	    <Type name="iPhone Z">18000元</Type>
	    <Type name="iPhone ZL">12000元</Type>
	</Brand>
</PhoneInfo>


<!-- 新的手机信息.xml -->
<?xml version="1.0" encoding="UTF-8"?>

<PhoneInfo> 
  <Brand name="华为"> 
    <Type name="P90">5000元</Type> 
  </Brand>  
  <Brand name="苹果"> 
    <Type name="iPhone Z">18000元</Type>  
    <Type name="iPhone ZL">12000元</Type> 
  </Brand>  
  <Brand name="小米"/>
</PhoneInfo>

 

10. XML,DOM,DOM4J总结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吾欲乘风归去,又恐琼楼玉宇

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

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值