简单介绍一下使用DOM解析XML文档,解析XML文件案例:
<?xml version="1.0" encoding="UTF-8"?>-<pet>-<dog id="1"><姓名>小白</姓名><健康值>100</健康值><亲密度>0</亲密度><年龄>1岁</年龄></dog>-<dog id="2"><姓名>黄鼠狼</姓名><健康值>30</健康值><亲密度>90</亲密度><年龄>5岁</年龄></dog>-<dog id="3"><姓名>小东</姓名><健康值>90</健康值><亲密度>10</亲密度><年龄>3岁</年龄></dog></pet>
使用DOM解析XML文档
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.Node;import org.w3c.dom.NodeList;import org.xml.sax.SAXException;/** * 使用DOM解析XML文档 * @author Administrator * */public class DomReadXML { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub //========使用DOM解析XML //第一步:建立DOM解析工厂对象实例 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); try { //第二步:从DOM解析工厂中获取解析器 DocumentBuilder db = dbf.newDocumentBuilder(); //第三步:解析XML文件;载入XML文件得到Document即DOM树 Document dom = db.parse("file:///D:/Desktop/chapter14/教学演示案例/示例3:使用内部DTD文件/pet2.xml"); //得到所有狗狗节点信息 NodeList nl = dom.getElementsByTagName("dog"); System.out.PRintln(nl.getLength()); //循环取出信息 for (int i = 0; i < nl.getLength(); i++) { //得到每只狗狗节点 Node dog = nl.item(i); //得到狗狗的属性(即ID) Element el = (Element)dog; String id = el.getAttribute("id"); System.out.println("ID:"+id); //获取狗狗的子节点信息 for(Node dog_child = dog.getFirstChild();dog_child!=null;dog_child = dog_child.getNextSibling()){ //为了防止打印空格(即#text);需要判断当前对象为Node节点对象 if(dog_child.getNodeType() == Node.ELEMENT_NODE){ String name = dog_child.getNodeName(); String value = dog_child.getFirstChild().getNodeValue(); System.out.println(name+":"+value); } } } } catch (ParserConfigurationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SAXException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }}
新闻热点
疑难解答