简单介绍一下使用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(); } } }