目录结构
- 项目
- xmlParse(包名)
- People.java
- people.xml
- PeopleHandler.java
- SaxParse.java
- DomParse.java
- JDomPares.java
- Dom4JParse.java
People类
package xmlParse;
public class People {
private String name;
private int age;
private String tel;
private int id;
@Override
public String toString() {
return "People{" +
"name='" + name + '\'' +
", age=" + age +
", tel='" + tel + '\'' +
", id=" + id +
'}';
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getTel() {
return tel;
}
public void setTel(String tel) {
this.tel = tel;
}
}
xml文件(people.xml)
<?xml version="1.0" encoding="utf-8" ?>
<people>
<person id="1">
<name>小红</name>
<age>12</age>
<tel>123456</tel>
</person>
<person id="2">
<name>小赵</name>
<age>13</age>
<tel>123456789</tel>
</person>
</people>
SAX解析
package xmlParse;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
import java.util.ArrayList;
import java.util.List;
public class PeopleHandle extends DefaultHandler {
private List<People> list;
private People people;
private String tag=null;
@Override
public void startDocument() throws SAXException {
super.startDocument();
list=new ArrayList<>();
System.out.println("开始解析xml文档....");
}
@Override
public void endDocument() throws SAXException {
super.endDocument();
System.out.println("解析xml文档结束....");
}
@Override
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
super.startElement(uri, localName, qName, attributes);
if(qName.equals("person")){
people=new People();
people.setId(Integer.parseInt(attributes.getValue("id")));
}
tag=qName;
System.out.println("开始元素"+qName);
}
@Override
public void endElement(String uri, String localName, String qName) throws SAXException {
super.endElement(uri, localName, qName);
if(qName.equals("person")){
list.add(people);
}
tag=null;
System.out.println(uri+"结束元素"+qName);
}
@Override
public void characters(char[] ch, int start, int length) throws SAXException {
super.characters(ch, start, length);
String s = new String(ch,start,length);
System.out.println(s);
if(tag!=null){
if(tag.equals("name")){
people.setName(s);
}else if(tag.equals("age")){
people.setAge(Integer.parseInt(s));
}else if(tag.equals("tel")){
people.setTel(s);
}
}
}
public List<People> getList() {
return list;
}
}
package xmlParse;
import org.xml.sax.SAXException;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParserFactory;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
public class SaxParserTest {
public static void main(String[] args)throws ParserConfigurationException, SAXException, IOException {
InputStream xml = Thread.currentThread().getContextClassLoader().getResourceAsStream("xmlParse/people.xml");
PeopleHandle peopleHandle = new PeopleHandle();
SAXParserFactory.newInstance().newSAXParser().parse(xml,peopleHandle);
List<People> list = peopleHandle.getList();
for (People p: list) {
System.out.println(p);
}
}
}
"C:\Program Files\Java\jdk-9.0.4\bin\java.exe" "-javaagent:D:\Program Files\JetBrains\IntelliJ IDEA 2018.3.4\lib\idea_rt.jar=50636:D:\Program Files\JetBrains\IntelliJ IDEA 2018.3.4\bin" -Dfile.encoding=UTF-8 -classpath "D:\java\test\bin;D:\java\test\libs\guava-27.0-jre.jar;D:\Program Files\JetBrains\IntelliJ IDEA 2018.3.4\lib\junit.jar;D:\java\test\libs\apache-mina-2.0.20\dist\mina-core-2.0.20.jar;D:\java\test\libs\apache-mina-2.0.20\lib\slf4j-api-1.7.26.jar;D:\java\test\libs\jdom-2.0.6.jar;D:\java\test\libs\dom4j-2.0.2.jar" xmlParse.SaxParserTest
开始解析xml文档....
开始元素people
开始元素person
开始元素name
小红
结束元素name
开始元素age
12
结束元素age
开始元素tel
123456
结束元素tel
结束元素person
开始元素person
开始元素name
小赵
结束元素name
开始元素age
13
结束元素age
开始元素tel
123456789
结束元素tel
结束元素person
结束元素people
解析xml文档结束....
People{name='小红', age=12, tel='123456', id=1}
People{name='小赵', age=13, tel='123456789', id=2}
DOM解析
package xmlParse;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class DomParseTest {
public static void main(String[] args)throws ParserConfigurationException, SAXException, IOException {
DocumentBuilder documentBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
InputStream xml = Thread.currentThread().getContextClassLoader().getResourceAsStream("xmlParse/people.xml");
Document document = documentBuilder.parse(xml);
NodeList personEle = document.getElementsByTagName("person");
People people=null;
List<People> peopleList= new ArrayList();
for (int i = 0; i < personEle.getLength(); i++) {
Node item = personEle.item(i);
people=new People();
people.setId(Integer.parseInt(item.getAttributes().getNamedItem("id").getNodeValue()));
NodeList childNodes = item.getChildNodes();
for (int j = 0; j < childNodes.getLength(); j++) {
Node item1 = childNodes.item(j);
if(item1.getNodeName().equals("name")){
people.setName(item1.getTextContent());
}else if(item1.getNodeName().equals("age")){
people.setAge(Integer.parseInt(item1.getTextContent()));
}else if(item1.getNodeName().equals("tel")){
people.setTel(item1.getTextContent());
}
}
peopleList.add(people);
}
System.out.println(Arrays.toString(peopleList.toArray()));
}
}
"C:\Program Files\Java\jdk-9.0.4\bin\java.exe" "-javaagent:D:\Program Files\JetBrains\IntelliJ IDEA 2018.3.4\lib\idea_rt.jar=46783:D:\Program Files\JetBrains\IntelliJ IDEA 2018.3.4\bin" -Dfile.encoding=UTF-8 -classpath "D:\java\test\bin;D:\java\test\libs\guava-27.0-jre.jar;D:\Program Files\JetBrains\IntelliJ IDEA 2018.3.4\lib\junit.jar;D:\java\test\libs\apache-mina-2.0.20\dist\mina-core-2.0.20.jar;D:\java\test\libs\apache-mina-2.0.20\lib\slf4j-api-1.7.26.jar;D:\java\test\libs\jdom-2.0.6.jar;D:\java\test\libs\dom4j-2.0.2.jar" xmlParse.DomParseTest
[People{name='小红', age=12, tel='123456', id=1}, People{name='小赵', age=13, tel='123456789', id=2}]
JDOM解析
package xmlParse;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.JDOMException;
import org.jdom2.input.SAXBuilder;
import org.jdom2.input.sax.SAXBuilderEngine;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
public class JDomParse {
public static void main(String[] args) throws IOException, JDOMException {
InputStream xml = Thread.currentThread().getContextClassLoader().getResourceAsStream("xmlParse/people.xml");
Document build = new SAXBuilder().build(xml);
Element rootElement = build.getRootElement();
People people=null;
List<People> peopleList= new ArrayList();
Iterator<Element> iterator = rootElement.getChildren("person").iterator();
while (iterator.hasNext()){
Element ele = iterator.next();
people=new People();
people.setId(Integer.parseInt(ele.getAttribute("id").getValue()));
people.setName(ele.getChildText("name"));
people.setAge(Integer.parseInt(ele.getChildText("age")));
people.setTel(ele.getChildText("tel"));
peopleList.add(people);
}
System.out.println(Arrays.toString(peopleList.toArray()));
}
}
"C:\Program Files\Java\jdk-9.0.4\bin\java.exe" "-javaagent:D:\Program Files\JetBrains\IntelliJ IDEA 2018.3.4\lib\idea_rt.jar=46783:D:\Program Files\JetBrains\IntelliJ IDEA 2018.3.4\bin" -Dfile.encoding=UTF-8 -classpath "D:\java\test\bin;D:\java\test\libs\guava-27.0-jre.jar;D:\Program Files\JetBrains\IntelliJ IDEA 2018.3.4\lib\junit.jar;D:\java\test\libs\apache-mina-2.0.20\dist\mina-core-2.0.20.jar;D:\java\test\libs\apache-mina-2.0.20\lib\slf4j-api-1.7.26.jar;D:\java\test\libs\jdom-2.0.6.jar;D:\java\test\libs\dom4j-2.0.2.jar" xmlParse.DomParseTest
[People{name='小红', age=12, tel='123456', id=1}, People{name='小赵', age=13, tel='123456789', id=2}]
DOM4J解析
package xmlParse;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
public class Dom4jParse {
public static void main(String[] args)throws DocumentException {
InputStream xml = Thread.currentThread().getContextClassLoader().getResourceAsStream("xmlParse/people.xml");
Element rootElement = new SAXReader().read(xml).getRootElement();
Iterator<Element> iterator = rootElement.elementIterator("person");
People people=null;
List<People> peopleList= new ArrayList();
while (iterator.hasNext()){
Element ele = iterator.next();
people=new People();
people.setId(Integer.parseInt(ele.attribute("id").getValue()));
Iterator<Element> iterator1 = ele.elements().iterator();
while (iterator1.hasNext()){
Element ele1 = iterator1.next();
if(ele1.getName().equals("name")){
people.setName(ele1.getText());
}else if(ele1.getName().equals("age")){
people.setAge(Integer.parseInt(ele1.getText()));
}else if(ele1.getName().equals("tel")){
people.setTel(ele1.getText());
}
}
peopleList.add(people);
}
System.out.println(Arrays.toString(peopleList.toArray()));
}
}
"C:\Program Files\Java\jdk-9.0.4\bin\java.exe" "-javaagent:D:\Program Files\JetBrains\IntelliJ IDEA 2018.3.4\lib\idea_rt.jar=46783:D:\Program Files\JetBrains\IntelliJ IDEA 2018.3.4\bin" -Dfile.encoding=UTF-8 -classpath "D:\java\test\bin;D:\java\test\libs\guava-27.0-jre.jar;D:\Program Files\JetBrains\IntelliJ IDEA 2018.3.4\lib\junit.jar;D:\java\test\libs\apache-mina-2.0.20\dist\mina-core-2.0.20.jar;D:\java\test\libs\apache-mina-2.0.20\lib\slf4j-api-1.7.26.jar;D:\java\test\libs\jdom-2.0.6.jar;D:\java\test\libs\dom4j-2.0.2.jar" xmlParse.DomParseTest
[People{name='小红', age=12, tel='123456', id=1}, People{name='小赵', age=13, tel='123456789', id=2}]