Dom解析xml的步骤:
(1)创建一个DocumentBuilderFactory对象(用DocumentBuilderFactory.newInstance()创建)
(2)利用DocumentBuilderFactory对象创建DocumentBuilder对象
(3)利用DocumentBuilder对象创建Document对象
(4)解析xml文件
1.Java 代码:
package com.jxufe.read;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
/**
* 对xml的 读取
*
* @author cd
*
*/
public class XMLDOMRead {
public static void main(String[] args) {
// 创建一个DocumentBuilderFactory对象
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
// 创建DocumentBuilder对象
DocumentBuilder builder;
try {
builder = factory.newDocumentBuilder();
// 通过DocumentBuilder对象加载book.xml文件,并创建Document对象
Document document = builder.parse("E:/code/xmlreadAndWriter/person.xml");
NodeList nodeList = document.getElementsByTagName("person");
// 判断是否存在“book1”这样的节点,有就执行下一步奏。
treverseNode(nodeList);
} catch (Exception e) {
throw new RuntimeException("DOM解析xml文件失败", e);
}
}
private static void treverseNode(NodeList nodeList) {
if (nodeList == null)
return;
for (int i = 0; i < nodeList.getLength(); i++) {
Node node = nodeList.item(i);
/*
* 获取节点为“book1”的属性值
*/
NamedNodeMap attributes = node.getAttributes();
for (int j = 0; j < attributes.getLength(); j++) {
System.out.println(attributes.item(j).getNodeName() + ":" + attributes.item(j).getNodeValue());
}
/**
* 获取节点为“book1”的子节点信息
*/
NodeList childNodes = node.getChildNodes();
if (childNodes != null) {
for (int j = 0; j < childNodes.getLength(); j++) {
if (childNodes.item(j).getNodeType() == Node.ELEMENT_NODE)
System.out.println(
// 不能用getNodeValue()方法获取节点的文本,也可以通过getTextcontent获取。
childNodes.item(j).getNodeName() + ":"
+ childNodes.item(j).getFirstChild().getNodeValue());
}
}
}
}
}
2.xml文件内容:
<?xml version="1.0" encoding="UTF-8"?>
<world>
<person id="1">
<name>张三</name>
<gender>女</gender>
<age>24</age>
</person>
<person id="2">
<name>张三</name>
<gender>女</gender>
<age>24</age>
</person>
</world>