xml文件的三种解析方式之---dom解析
dom解析是把xml文件的各个标签当做节点,并且以树的形式存放在内存中。
下面是一个小的案例:
package itcast.cn;
import java.io.IOException;
import javax.lang.model.element.Element;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
public class DomExercise {
public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException {
//1取得一个工厂对象
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
//2.通过这个工厂来获取一个builder
DocumentBuilder builder = factory.newDocumentBuilder();
//3.通过这个builder获得一个document
Document document = builder.parse("person.xml");
//4.通过这个document来解释数据
// //需求:获取老王的值
// NodeList nameList=document.getElementsByTagName("name");
// Node node= nameList.item(1);
// //获取老王的值
// String name=node.getTextContent();
// System.out.println(name);
NodeList personList = document.getElementsByTagName("person");
for (int i = 0; i < personList.getLength(); i++) {
//取出每个person
Node personNode = personList.item(i);
NodeList childNodes = personNode.getChildNodes();
for (int j = 0; j < childNodes.getLength(); j++) {
Node chilidnode = childNodes.item(j);
if (chilidnode.getNodeType()==Node.ELEMENT_NODE) {
String name = chilidnode.getNodeName();
String age = chilidnode.getTextContent();
System.out.println(name+"="+age);
}
}
}
}
}
person.xml文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<persons>
<person id="001">
<name>张宇</name>
<age>23</age>
</person>
<person id="002">
<name>老王</name>
<age>23</age>
</person>
</persons>