XML-----DOM对文档操作及XPATH操作

DOM定义了Java访问及操作XML文档的标准方法。

在Java中使用DOM4J解析XML,XML视为docment对象,标签视为Element对象。

详细操作代码:

xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hr SYSTEM "hr.dtd">
<!-- 人力资源管理系统-->
<hr>
	<employee no="ID1">
		<name>王炜</name>
		<age>24</age>
		<salary>4000</salary>
		<department>
			<dname>会计部</dname>
			<address>普联科技</address>
		</department>
	</employee>

	<employee no="ID2">
		<name>张龙珠</name>
		<age>24</age>
		<salary>4000</salary>
		<department>
			<dname>会计部</dname>
			<address>普联科技董事会</address>
		</department>
	</employee>

	<employee no="ID3">
		<name>张龙珠</name>
		<age>24</age>
		<salary>4000</salary>
		<department>
			<dname>会计部</dname>
			<address>普联科技后勤</address>
		</department>
	</employee>

	<employee no="3311">
		<name>李铁柱</name>
		<age>600</age>
		<salary>3600</salary>
		<department>
			<dname>人事部</dname>
			<address>济南齐鲁软件园</address>
		</department>
	</employee>
</hr>

读取xml文件:

package com.imooc.dom4j;

import java.util.List;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

public class HrReader {
	public void readXml() {
		String file ="C:/Users/wangw/eclipse-workspace/xml/src/xml/hr.xml";
		// SAXReader类是读取XML的核心类,用于将XML解析之后以“树”的形式保存在内存中。
		SAXReader reader =new SAXReader();
		try {
			Document doc = reader.read(file);
			// 获取XML文档中的根节点,即HR标签
			Element root = doc.getRootElement();
			//elements方法用于获取指定的标签集合
			List<Element> employees = root.elements();
			for (Element employee : employees) {
				// element方法用于获取唯一的子节点对象
				Element name = employee.element("name");
				// getText()方法用于获取标签文本
				String empName = name.getText();
				System.out.println(empName);
				System.out.println(employee.elementText("age"));
				System.out.println(employee.elementText("salary"));
				Element department = employee.element("department");
				System.out.println(department.element("dname").getText());
				System.out.println(department.element("address").getText());
				// 提取number
				Attribute att =employee.attribute("no");
				System.out.println(att.getText());
			}
		} catch (DocumentException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	public static void main(String[] args) {
		HrReader hrReader =new HrReader();
		hrReader.readXml();
	}

}

操作XML文件:

package com.imooc.dom4j;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

public class HrWriter {
public void writerXml() throws IOException {
	String file ="C:/Users/wangw/eclipse-workspace/xml/src/xml/hr.xml";
	// SAXReader类是读取XML的核心类,用于将XML解析之后以“树”的形式保存在内存中。
	SAXReader reader =new SAXReader();
	try {
		Document doc = reader.read(file);
		Element root =doc.getRootElement();
		Element employee = root.addElement("employee");
		employee.addAttribute("no", "3311");
		Element name =employee.addElement("name");
		name.setText("李铁柱");
		employee.addElement("age").setText("600");
		employee.addElement("salary").setText("3600");
		Element department =employee.addElement("department");
		department.addElement("dname").setText("人事部");
		department.addElement("address").setText("济南齐鲁软件园");
		Writer writer =new OutputStreamWriter(new FileOutputStream(file),"UTF-8");
		doc.write(writer);
		writer.close();
		
	} catch (DocumentException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
}
public static void main(String[] args) throws IOException {
	HrWriter hrWriter =new HrWriter();
	hrWriter.writerXml();
}
}

利用XPATH读取查询xml文件:

import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;

public class XPathTester {
	public void xpath(String xpathExp) {
		String file ="C:/Users/wangw/eclipse-workspace/xml/src/xml/hr.xml";
		// SAXReader类是读取XML的核心类,用于将XML解析之后以“树”的形式保存在内存中。
		SAXReader reader =new SAXReader();
		try {
			Document doc = reader.read(file);
			List<Node> nodes = doc.selectNodes(xpathExp);
			for (Node node : nodes) {
				Element emp =(Element) node;
				System.out.println(emp.elementText("name"));
				System.out.println(emp.elementText("age"));
				System.out.println(emp.elementText("salary"));
			}
		} catch (DocumentException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	public static void main(String[] args) {
		XPathTester tester =new XPathTester();
		// tester.xpath("/hr/employee");
		 // tester.xpath("//employee");
		//tester.xpath("//employee[salary<4000]");
		// tester.xpath("//employee[name ='李铁柱']");
		// tester.xpath("//employee[@no ='3311']");
		//tester.xpath("//employee[1]");
		// tester.xpath("//employee[last()]");
		//tester.xpath("//employee[position()<6]");
		tester.xpath("//employee[3]| //employee[2]");
	}
}

本文介绍了XML的基本操作方法,使用dom4j解析操作XML,使用xpath查询xml数据

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

知虚

权当做笔记,打赏随您心意

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

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

打赏作者

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

抵扣说明:

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

余额充值