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数据