DOM解析操作步骤:
1、建立DocumentBuilderFactory:
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
2、建立DocumentBuilder:
DocumentBuilder builder = factory.newDocumentBuilder();
3、建立Document:
Document doc = builder.parse("要读取的文件路径");
4、建立NodeList:
NodeList nl = doc.getElementsByTagName("读取节点");
5、进行XML信息读取。
-----------------------------------------------------------------------
要解析的XML文档:demo.xml
<?xml version="1.0" encoding="GBK"?>
<addresslist>
<linkman>
<name>小新</name>
<email>xiaoxin@163.com</email>
</linkman>
<linkman>
<name>小白</name>
<email>xiaobai@163.com</email>
</linkman>
</addresslist>
-----------------------------------------------------------------------
import java.io.File;
import java.io.IOException;
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.NodeList;
import org.xml.sax.SAXException;
public class DOMDemo {
public static void main(String[] args) {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = null;
try{
builder = factory.newDocumentBuilder();
}catch(ParserConfigurationException e){
e.printStackTrace();
}
Document doc = null;
try {
doc = builder.parse("d:"+File.separator+"demo.xml");
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
NodeList nl = doc.getElementsByTagName("linkman");
for(int x =0;x<nl.getLength();x++){
Element e =(Element) nl.item(x);
System.out.println("姓名:"+e.getElementsByTagName("name").item(0).getFirstChild().getNodeValue());
System.out.println("邮箱:"+e.getElementsByTagName("email").item(0).getFirstChild().getNodeValue());
}
}
}
运行结果:
姓名:小新
邮箱:xiaoxin@163.com
姓名:小白
邮箱:xiaobai@163.com