TestXMLParser.java
package test;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
import javax.lang.model.element.Element;
import javax.swing.text.Document;
import javax.xml.soap.Node;
import org.dom4j.DocumentException;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import org.junit.Test;
public class TestXmlParser {
@Test
public void testXml1() throws DocumentException {
//1.导入dom解析包
//2.创建一个SAXReader
SAXReader saxReader=new SAXReader();
//3.使用reader读取文件,返回一个document对象
org.dom4j.Document doc =saxReader.read(new File("src/test/stu.xml"));
System.out.println(doc);
}
@Test
public void testXml2() throws DocumentException {
SAXReader reader=new SAXReader();
org.dom4j.Document doc =reader.read(new File("src/test/stu.xml"));
/*short nodeType=doc.getNodeType();
System.out.println(nodeType);*/
//获取根节点,使用根节点往下找
org.dom4j.Element element= doc.getRootElement();
//System.out.println( element.getNodeType());
System.out.println( element.getName());
List<org.dom4j.Element>elements=element.elements();
for(org.dom4j.Element ele : elements) {
//String text=((org.dom4j.Element) ele).elementText("name");
List<org.dom4j.Element>stuChild=element.elements();
for(org.dom4j.Element ele2 :stuChild) {
System.out.println(ele2.getText());
}
}//elements代表所有student的集合
//for(元素类型t 元素变量x : 遍历对象obj)
for(org.dom4j.Element eleTemp :elements) {
//每个eleTemp代表一个student标签
String id=eleTemp.attributeValue("id");
System.out.println("id值为:"+id);
}
}
@Test
public void testXml3() throws DocumentException {
SAXReader reader=new SAXReader();
org.dom4j.Document document=reader.read(new File("src/test/stu.xml"));
org.dom4j.Element rootEle=document.getRootElement();
List<org.dom4j.Element>elements=rootEle.elements();
List<Student>list=new ArrayList<>();
for(org.dom4j.Element ele : elements) {
String id=ele.attributeValue("id");
String name=ele.elementText("name");
String age=ele.elementText("age");
int parseInt=0;
try {
parseInt= Integer.parseInt(age);
} catch (Exception e) {
// TODO: handle exception
}
list.add(new Student(name,parseInt,id));
}
System.out.println(list);
}
@Test
public void testXml4() throws DocumentException {
SAXReader reader= new SAXReader();
org.dom4j.Document document=reader.read(new File("src/test/stu.xml"));
org.dom4j.Element rootElement=document.getRootElement();
org.dom4j.Element element=rootElement.element("student");
org.dom4j.Element name=element.element("name");
//System.out.println(name.getText());
name.setText("王五");
name.addAttribute("nickname", "小王");
//把修改的东西保存起来
OutputFormat format= OutputFormat.createPrettyPrint();
//生成的文件有格式
XMLWriter writer = null;
try {
writer = new XMLWriter(new FileOutputStream("out.xml"),format);
} catch (UnsupportedEncodingException | FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
writer.write(document);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
writer.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Test
//*xmlPath是用来简化dom查询
// * /从根开始找
//* //找所有
public void testXml5() throws DocumentException {
SAXReader reader= new SAXReader();
org.dom4j.Document document=reader.read("src/test/stu.xml");
org.dom4j.Element rootelement=document.getRootElement();
org.dom4j.Node node=rootelement.selectSingleNode("//student[@id='456']");
String name=node.getName();
System.out.println(name);
}
}
stu.xml
<?xml version="1.0" encoding="UTF-8"?>
<students>
<student id="123">
<name>张三</name>
<age>18</age>
</student>
<student id="456">
<name>张三</name>
<age>18<19</age>
</student>
</students>
student.java
package test;
public class Student {
private String name;
private Integer age;
private String id;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public Student(String name, Integer age, String id) {
super();
this.name = name;
this.age = age;
this.id = id;
}
public Student() {
super();
}
@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + ", id=" + id + "]";
}
}