XML文本解析
XML 全称 eXtensible Markup Language(指可扩展标记语言),常作为配置文件的文件格式;
解析方式有: dom 和 sax
dom 一次读取,十分耗内存,但可以进行curd操作
sax 逐行读取,内存消耗少,只能进行读操作
解析使用Dom4j库,首先创建一个Maven工程,导包
<!-- https://mvnrepository.com/artifact/dom4j/dom4j -->
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>1.6.1</version>
</dependency>
解析的demo xml内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<person>
<p1>
<name>jason</name>
<age>26</age>
</p1>
<p1>
<name>tom</name>
<age>18</age>
</p1>
</person>
创建Java类,进行解析
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import java.util.List;
public class TestDom4j {
public static void main(String[] args) throws Exception {
SelectName();
}
public static void SelectName() throws Exception {
// 创建解析器
SAXReader saxReader = new SAXReader();
// 得到Document
Document document= saxReader.read("src\\main\\resources\\XmlRead.xml");
// 得到根节点
Element root = document.getRootElement();
//得到所有P1
List<Element> list= root.elements("p1");
// Element e1= list.get(0);
// Element e2= list.get(1);
// //得到第一个p1
// Element e1= root.element("p1");
// Element n1 = e1.element("name");
// System.out.println(n1.getText());
// // 得到p1里面的属性值
// String value = p1.attributeValue("name")
// System.out.println(value);
// // 删除元素属性
// n1.getParent();// 获取到n1的父节点e1
// e1.remove(n1);
// 遍历list
for (Element element : list) {
Element name1 = element.element("name");
String s = name1.getText();
System.out.println(s);
}
}
public static void AddXmlInfo(Student student) throws Exception {
// 创建解析器
SAXReader saxReader = new SAXReader();
// 得到Document
Document document = saxReader.read("src\\main\\resources\\XmlRead.xml");
// 得到根节点
Element root = document.getRootElement();
// 在根节点上添加stu
Element stu = root.addElement("stu");
Element id1 = stu.addElement("id");
Element name1 = stu.addElement("name");
Element age1 = stu.addElement("age");
// 赋值
id1.setText(student.getId());
name1.setText(student.getName());
age1.setText(student.getAge());
//回写XML
OutputFormat format = OutputFormat.createPrettyPrint();
XMLWriter xmlWriter = new XMLWriter(new FileOutputStream("src\\main\\resources\\t1.xml"),format);
xmlWriter.write(document);
xmlWriter.close();
}
}
整体看,和Xpath解析HTML很类似.
<人追求理想之时,便是坠入孤独之际.> By 史泰龙