【Java高级特性】解析XML技术——DOM4j解析XML

1 DOM4j

DOM4j是非常优秀的Java XML API,性能优异、功能强大,开放源代码。使用DOM4j解析XML时,需要导入DOM4j的jar包,可以在官网下载。

2 DOM4j获取Document对象

步骤如下:

1.创建SAXReader对象

SAXReader   reader=new SAXReader()

2.通过SAXReader对象获取Document()对象

Document document=reader.read(url)

public static void main(String[] args) {
		//将xml文件转换成Document对象
		SAXReader reader=new SAXReader();
		try {
			//这里的Document是org.dom4j包中的
			Document document=reader.read("手机信息.xml");
		} catch (DocumentException e) {
			e.printStackTrace();
		}
	}

3 访问DOM4j节点

XML文件如下:

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<phoneInfo>
	<brand name="华为手机">
		<type name="华为荣耀" />
		<type name="HW123" />
		<type name="RY321" />
	</brand>
	<brand name="小米手机">
		<type name="小米10" />
		<type name="红米" />
		<type name="Rednote" />
	</brand>
</phoneInfo>

3.1 显示xml文件内容

//显示XML文件内容
	public static void showXml(){
		//获取xml的元素根节点:getRootElement()
		Element root=document.getRootElement();
		//将root里的元素放到元素迭代器itBrand中
		Iterator itBrand=root.elementIterator();
		//遍历元素迭代器itBrand
		while (itBrand.hasNext()) {
			Element brand = (Element) itBrand.next();
			//通过属性获得属性值:attributeValue(String name)
			System.out.println(brand.attributeValue("name"));
			//将brand里的元素放到元素迭代器中
			Iterator itType=brand.elementIterator();
			while (itType.hasNext()) {
				Element type = (Element) itType.next();
				System.out.println("\t"+type.attributeValue("name"));
			}
		}
	}

3.2 保存xml文件

//将数据保存到指定路径的xml文件中的方法,需要传递一个指定路径参数path
	public static void saveXml(String path){
		//内存中的数据写到XML中使用XMLWriter类
		XMLWriter writer=null;
		try {
			//创建XMLWriter对象,传递参数是字符流Writer和格式format
			OutputFormat format=OutputFormat.createPrettyPrint();//创建一个完美输出格式
			//设置编码格式
			format.setEncoding("utf-8");
			 writer=new XMLWriter(new FileWriter(path), format);
			//写入xml文件中
			writer.write(document);
		} catch (IOException e) {
			e.printStackTrace();
		}finally{
			try {
				writer.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}

3.3 添加DOM4j节点

添加节点主要通过父节点调用addELement("子节点名称")方法实现。

//添加xml数据
	public static void addXml(){
		//获取元素根节点
		Element root=document.getRootElement();
		//添加brand节点:addElement("brand")
		Element brand=root.addElement("brand");
		//添加brand节点的属性名、属性值
		brand.addAttribute("name", "三星");
		//添加type子节点:addElement("type")
		Element type1=brand.addElement("type");
		//添加type节点的属性、属性名
		type1.addAttribute("name", "Galay");
		Element type2=brand.addElement("type");
		type2.addAttribute("name", "Note4");
		//将添加的数据保存到指定路径的Xml文件中
		saveXml("手机信息.xml");
	}

3.4 修改 DOM4j节点

通过addAttribute(String name,String value)可以实现添加属性的功能。

//修改xml数据
	public static void updateXml(){
		//获取元素根节点
		Element root=document.getRootElement();
		Iterator itBrand=root.elementIterator();
		//修改第三个brand节点
		int count=0;
		while (itBrand.hasNext()) {
			count++;
			Element brand = (Element) itBrand.next();
			if (count==3) {
				brand.addAttribute("name", "三星手机");
			}
		}
		saveXml("手机信息.xml");
	}

3.5 删除DOM4j节点

通过父节点调用remove()方法删除。

//删除xml数据
	public static void deleteXml(){
		//获取元素根节点
		Element root=document.getRootElement();
		Iterator itBrand=root.elementIterator();
		while (itBrand.hasNext()) {
			Element brand = (Element) itBrand.next();
			String brandName=brand.attributeValue("name");
			if (brandName.equals("三星手机")) {
				brand.getParent().remove(brand);
			}
		}
		saveXml("手机信息.xml");
	}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值