JAVA读取XML文件

解析XML的步骤如下:

  1.创建DocumentBuilder工厂
  2.创建DocumentBuilder对象
  3.DocumentBuilder对象的parse方法得到Document对象
  4.Document对象的getElementsByTagName得到NodeList集合
  5.通过getFirstChild和getNextSibling进行遍历
 

用到的包:

import javax.xml.parsers.*;
import org.w3c.dom.*;
import org.xml.sax.*;

用到的对象:

DocumentBuilderFactory:创建DocumentBuilder的抽象工厂

DocumentBuilder:可以从 XML 获取一个 Document

Document:提供供对文档数据的基本访问

用到的方法:

DocumentBuilder.parse(String)':将给定 URI 的内容解析为一个 XML 文档,并且返回一个新的 DOM Document对象

Document.getElementsByTagName(String)':返回具有给定标记名称的所有 Element 的 NodeList

Element.getAttribute(String)':通过名称获得属性值

下面来解析一个XML文件

 1 import javax.xml.parsers.*;  
 2 import org.w3c.dom.*;  
 3 import org.xml.sax.*;  
 4   
 5 public class Test  
 6 {  
 7     public static void main(String[] args)  
 8     {  
 9         DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();  
10         try  
11         {  
12             DocumentBuilder db = dbf.newDocumentBuilder();  
13             Document doc = db.parse("pet2.xml");  
14   
15             NodeList dogList = doc.getElementsByTagName("dog");  
16             System.out.println("共有" + dogList.getLength() + "个dog节点");  
17             for (int i = 0; i < dogList.getLength(); i++)  
18             {  
19                 Node dog = dogList.item(i);  
20                 Element elem = (Element) dog;  
21                 System.out.println("id:" + elem.getAttribute("id"));  
22                 for (Node node = dog.getFirstChild(); node != null; node = node.getNextSibling())  
23                 {  
24                     if (node.getNodeType() == Node.ELEMENT_NODE)  
25                     {  
26                         String name = node.getNodeName();  
27                         String value = node.getFirstChild().getNodeValue();  
28                         System.out.print(name + ":" + value + "	");  
29                     }  
30                 }  
31                 System.out.println();  
32             }  
33         }  
34         catch (Exception e)  
35         {  
36             e.printStackTrace();  
37         }  
38     }  
39 }  

XML文件

 1 <pets>  
 2     <dogs>  
 3         <dog id="1">            
 4             <name>YAYA</name>  
 5             <health>100</health>  
 6             <love>0</love>  
 7             <strain>酷酷的雪娜瑞</strain>  
 8         </dog>  
 9         <dog id="2">            
10             <name>OUOU</name>  
11             <health>90</health>  
12             <love>15</love>  
13             <strain>聪明的拉布拉多犬</strain>  
14         </dog>  
15     </dogs>  
16     <penguins>  
17         <penguin id="3">            
18             <name>QQ</name>  
19             <health>100</health>  
20             <love>20</love>  
21             <sex>Q仔</sex>             
22         </penguin>          
23     </penguins>  
24 </pets>  
原文地址:https://www.cnblogs.com/wqj-blog/p/5977544.html