用java解析XML
思路就是代码注释:
package cn.liu.xmtest;
/**
* 解析xml
*/
import java.io.File;
import java.util.Iterator;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class Demo01 {
public static void main(String[] args) throws Exception {
//1.创建SaxReader对象,用读取xml对象
SAXReader is = new SAXReader();
//2.读取xml文件,将xml转为Document对象
Document doc = is.read(new File("src\\demo03.xml"));
//3.得到xml的根对象
Element root= doc.getRootElement();
//4.获取根对象下的所有子对象
Iterator<?> a = root.elementIterator();
while(a.hasNext()) {
//4.1取出根的子元素元素
Element ele = (Element)a.next();
System.out.println(ele.getName());
//4.2获取子元素ele的属性,若有多个继续迭代器,没有就取一次
Attribute att = ele.attribute("id");
System.out.println(att.getName()+"="+att.getValue());
//获取ele元素下的子元素
Iterator<?> b = ele.elementIterator();
while(b.hasNext()) {
Element sunEle = (Element)b.next();
System.out.println(sunEle.getName()+"="+sunEle.getText());
}
System.out.println("---------------------");
}
}
}
xml文件:
<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE data SYSTEM "aas.dtd">
<datas>
<student id="1">
<name>小李</name>
<course>数学</course>
<score>98</score>
</student>
<stdent id="2">
<name>王五</name>
<course>语文</course>
<score>88</score>
</stdent>
</datas>
运行结果:
红色是JDK11的警告不用管。