##关于xml的使用
两种解析方式
1.SAX
可以读取一行并解析一行,不会造成把内存的溢出。但是只能进行查询
2.DOM
可以一次性将整个xml文件进行加载进内存中,但是容易内存溢出,造成文件的丢失。可以进行增加以及删除
步骤:
一:dom4j的使用
1.创建SAXreader对象
SAXReader reader = new SAXReader();
2.传入xml值,用document进行接受
Document document = reader.read(new File(“src/xml/demo.xml”));
3.得到根元素 ,即是stus --> stu
Element rootElement = document.getRootElement();
4.获取元素,有两种,
一种是获取一个,另一种创建集合,将获取的根元素传入进集合中
rootElement.element 获取子元素
4.1
System.out.println(rootElement.element(“stu”).element(“age”).getStringValue());
public static void main(String[] args) {
try {
//1.创建sax读取对象
SAXReader reader = new SAXReader();
//2.传入输入流 即是:解析xml文件
Document document = reader.read(new File("src/xml/demo.xml"));
//3.得到根元素
Element rootElement = document.getRootElement();
//得到根元素
//System.out.println(rootElement.element("stu").getName());
//rootElement.element 获取子元素
//获得特定的根元素的子元素的子元素
//System.out.println(rootElement.element("stu").element("age").getStringValue());
//rootElement.elements 返回值类型为集合list 获取根元素下面的所有的子元素
//即使 stus --> stu 元素
List<Element> elements = rootElement.elements();
for (Element element : elements) {
//得到所有的stu元素
//System.out.println(element.getName());
String name = element.element("name").getText();
String age = element.element("age").getText();
System.out.println(name + age);
}
} catch (Exception e) {
e.printStackTrace();
}
}
Xpath的使用
//
selectSingNote() --Node(Element)
node 的级别太高了 用element作为对象
selectNodes() --List
public static void main(String[] args) {
try {
//1.创建sax对象啊
SAXReader reader = new SAXReader();
//2.传入xml文件
Document document = reader.read(new File(“src/xml/demo.xml”));
//3.得到根元素
Element rootElement = document.getRootElement();
//获取单个元素
Element nameElement= (Element) rootElement.selectSingleNode("//name"); //传入的是元素 ,要进行强转
System.out.println(nameElement.getText());
//获取文档中的所有的元素
List<Element> list= rootElement.selectNodes("//name");
for (Element element : list) {
System.out.println(element.getText());
}
} catch (Exception e) {
e.printStackTrace();
}
}