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文件如下:

 

    张宇

    23

 

 

    老王

    23