package com.itheima.d1_dom4j;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.junit.Test;
import java.io.File;
import java.io.InputStream;
/**
* 目标:学会使用dom4j解析XML文件中的数据
* 1.导入dom4j框架。
* 2.准备一个XML文件。
*/
public class Dom4jHelloWorldDemo1 {
@Test
public void parseXMLData() throws Exception {
//1.创建一个Dom4j的解析器对象,代表了整个dom4j框架
SAXReader saxReader = new SAXReader();
//2.把SML文件加载到内存中成为一个Document文档对象
// Document document = saxReader.read(new File("D:\\code\\javasepromax\\xml-app\\src\\com\\itheima\\d1_dom4j\\Contacts.xml"));需要通过模块名去定位
// Document document = saxReader.read(new FileInputStream("D:\\code\\javasepromax\\xml-app\\src\\com\\itheima\\d1_dom4j\\Contacts.xml"));
//注意:getResourceAsStream中的/是直接去src下寻找的文件
InputStream is = Dom4jHelloWorldDemo1.class.getResourceAsStream("/com\\itheima\\d1_dom4j\\Contacts.xml");
Document document = saxReader.read(is);
//3.获取根元素对象
Element root = document.getRootElement();
System.out.println(root.getName());
}
}
<?xml version="1.0" encoding="UTF-8"?>
<contactList>
<contact id="1" vip="true">
<name> 潘金莲 </name>
<gender>女</gender>
<email>panpan@itcast.cn</email>
</contact>
<contact id="2" vip="false">
<name>武松</name>
<gender>男</gender>
<email>wusong@itcast.cn</email>
</contact>
<contact id="3" vip="false">
<name>武大狼</name>
<gender>男</gender>
<email>wuda@itcast.cn</email>
</contact>
<user>
</user>
</contactList>
package com.itheima.d1_dom4j;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.junit.Test;
import java.io.File;
import java.io.InputStream;
import java.util.List;
/**
* 目标:学会使用dom4j解析XML文件中的数据
* 1.导入dom4j框架。
* 2.准备一个XML文件。
*/
public class Dom4jHelloWorldDemo1 {
@Test
public void parseXMLData() throws Exception {
//1.创建一个Dom4j的解析器对象,代表了整个dom4j框架
SAXReader saxReader = new SAXReader();
//2.把SML文件加载到内存中成为一个Document文档对象
// Document document = saxReader.read(new File("D:\\code\\javasepromax\\xml-app\\src\\com\\itheima\\d1_dom4j\\Contacts.xml"));需要通过模块名去定位
// Document document = saxReader.read(new FileInputStream("D:\\code\\javasepromax\\xml-app\\src\\com\\itheima\\d1_dom4j\\Contacts.xml"));
//注意:getResourceAsStream中的/是直接去src下寻找的文件
InputStream is = Dom4jHelloWorldDemo1.class.getResourceAsStream("/com\\itheima\\d1_dom4j\\Contacts.xml");
Document document = saxReader.read(is);
//3.获取根元素对象
Element root = document.getRootElement();
System.out.println(root.getName());
//4.拿根元素下的全部子元素对象
// List<Element> sonEles = root.elements();
List<Element> sonEles = root.elements("contact");
for (Element sonEle : sonEles) {
System.out.println(sonEle.getName());
}
//拿某个子元素
Element userEle = root.element("user");
System.out.println(userEle.getName());
//默认提取第一个子元素对象
Element contact = root.element("contact");
//获取子文本元素
System.out.println(contact.elementText("name"));
//去掉前后空格
System.out.println(contact.elementTextTrim("name"));
//根据元素获取属性值
Attribute idAttr = contact.attribute("id");
System.out.println(idAttr.getName() + "-->" + idAttr.getValue());
//直接提取属性值
System.out.println(contact.attributeValue("id"));
System.out.println(contact.attributeValue("vip"));
//获取当前元素下的子元素对象
Element email =contact.element("email");
System.out.println(email.getText());
}
}