DOM文档对象模型
DOM(Domcunent Object Model) 定义了访问和操作XML文档的标准方法,DOM把XML文档作为树结构来查看,能够通过树来读写所有元素。
Dom4j
- Dom4j是一个易用的、开源的库,用于解析XML。他应用于Java平台,具有性能优异、功能强大和极其易使用的特点。
- Dom4j将XML视为Document对象
- XML标签被Dom4j定义为Element对象
Dom4j-2.1.3下载!
链接:https://pan.baidu.com/s/1-xQsVwi1w1okuaU8_Fn-tQ
提取码:519g
复制这段内容后打开百度网盘手机App,操作更方便哦–来自百度网盘超级会员V4的分享
开心呢!花了一小时!
Dom4j读取和遍历XML
- SAXReader类是读取XML文件的核心类,用于将XML解析后以树的形式保存在内存中。
- getRootElement()获取XML文档的根节点,即hr标签
- elements()用于获取指定的标签集合
- element()用于获取唯一的子节点对象
- getText()用于获取标签的文本值
- elementText用于获取子节点的文本值
- attribute()用于获取属性值
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 = "D:/eclipseworkspace/xml/src/hr.xml";
//SAXReader类是读取XML文件的核心类,用于将XML解析后以树的形式保存在内存中
SAXReader reader = new SAXReader();
try {
Document document = reader.read(file);
//getRootElement()获取XML文档的根节点,即hr标签
Element root = document.getRootElement();
//elements()用于获取指定的标签集合
List<Element> employees = root.elements("employee");
for(Element employee:employees) {
//element()用于获取唯一的子节点对象
Element name = employee.element("name");
//getText()用于获取标签的文本值
String empname = name.getText();
System.out.println(empname);
//elementText用于获取子节点的文本值
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());
//attribute()用于获取属性值
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 reader = new HrReader();
reader.readxml();
}
}
Dom4j更新XML
添加一个王五employee节点
public void writexml() {
String file = "D:/eclipseworkspace/xml/src/hr.xml";
SAXReader reader = new SAXReader();
try {
Document document = reader.read(file);
Element root = document.getRootElement();
Element employee = root.addElement("employee");
employee.addAttribute("no", "3311");
Element name = employee.addElement("name");
name.setText("王五");
employee.addElement("age").setText("36");
employee.addElement("salary").setText("3600");
Element department = employee.addElement("department");
department.addElement("dname").setText("人事部");
department.addElement("address").setText("xx大厦-B105");
Writer writer = new OutputStreamWriter(new FileOutputStream(file),"UTF-8");
document.write(writer);
writer.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
HrWriter hrWriter = new HrWriter();
hrWriter.writexml();
}
}
XPath路径表达式
- XPath路径表达式是XML中查找数据的语言;
- 掌握XPath可以极大地提高在提取数据时的开发效率;
- 学习XPath的本质就是掌握各种形式表达式的使用技巧。
表达式 | 描 述 |
---|---|
nodename | 选取此节点的所有子节点 |
/ | 从根节点选取 |
// | 从匹配选择的当前节点选择文档中的节点,而不考虑他们的位置 |
. | 选取当前节点 |
… | 选取当前节点的父节点 |
@ | 选取属性 |