Dom解析XMl文档

 

XMl文档

 1 <?xml version = "1.0" encoding = "UTF-8"?>
 2 <books>
 3     <book bookno="001">
 4         <title> java 编程</title>
 5         <author> me </author>
 6         <price> 80 </price>
 7     </book>
 8     <book bookno="002">
 9         <title> android 编程</title>
10         <author> me </author>
11         <price> 70 </price>
12     </book>
13 </books>

 

Dom解析程序

 1 /*
 2  * Dom 将文档进行扫描建立树状document文档有全部的节点  根节点为文档 子节点为每个实体 每个实体有属性子节点
 3  * 对document 文档进行遍历 输出文档内容
 4  * */
 5 import java.io.File;
 6 import java.io.IOException;
 7 import java.util.ArrayList;
 8 import java.util.List;
 9 
10 import javax.xml.parsers.DocumentBuilder;
11 import javax.xml.parsers.DocumentBuilderFactory;
12 import javax.xml.parsers.ParserConfigurationException;
13 
14 
15 import org.w3c.dom.Document;
16 import org.w3c.dom.NamedNodeMap;
17 import org.w3c.dom.Node;
18 import org.w3c.dom.NodeList;
19 import org.xml.sax.SAXException;
20 
21 public class DomXMLParser implements XMLParser {
22 
23     @Override
24     public List<Book> parseXML(String filename) {
25     List<Book> list = new ArrayList<Book>();
26     //文档生成器工厂对象
27     DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
28     Document document = null;
29     try {
30         //文档生成器对象
31         DocumentBuilder builder = factory.newDocumentBuilder();
32         //解析得到文档对象
33         document = builder.parse(new File(filename));
34     } catch (ParserConfigurationException e) {
35         e.printStackTrace();
36     } catch (SAXException e) {
37         e.printStackTrace();
38     } catch (IOException e) {
39         e.printStackTrace();
40     }
41     //导入w3c中的node类
42     Node rootnode = (Node) document.getDocumentElement();
43     //获得book元素列表
44     NodeList bookelementlist = rootnode.getChildNodes();
45     for(int i = 0 ;i<bookelementlist.getLength();i++){
46         // 获得单个book元素
47         Node bookelement = (Node) bookelementlist.item(i);
48         if(bookelement.getNodeName().equals("book")){
49             Book book =new Book();
50             NamedNodeMap map = bookelement.getAttributes();
51             Node booknonode =  (Node) map.getNamedItem("bookno");
52             String booknostring = booknonode.getNodeValue();
53             book.setNo(booknostring.trim());
54             NodeList subbookelementlist = bookelement.getChildNodes();
55             for(int j = 0;j<subbookelementlist.getLength();j++){
56                 Node subelementnode = (Node) subbookelementlist.item(j);
57                 String subelementnamestring = subelementnode.getNodeName();
58                 if(subelementnamestring.equals("title")){
59                     book.setAuthor((subelementnode.getTextContent().trim()));    
60                 }
61                 if(subelementnamestring.equals("author")){
62                     book.setTitle(subelementnode.getTextContent().trim());    
63                 }
64                 if(subelementnamestring.equals("price")){
65                     book.setPrice(Double.parseDouble(subelementnode.getTextContent().trim()));    
66                 }
67             }
68             list.add(book);
69         }
70     }
71         return list;
72     }
73 
74     public static void main(String[] args) {
75     DomXMLParser parser = new DomXMLParser();
76     List<Book> list = parser.parseXML("src\\book.xml");
77     
78     System.out.println("解析结果:");
79     for(Book book:list){
80         System.out.println(book);
81     }
82 
83     }
84 
85 }

 

posted @ 2017-07-05 12:26  千彧  阅读(204)  评论(0编辑  收藏  举报