zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    DLPAR中关于cpu资源的分配
    官网下载storage manager方法
    vsftpd中关于ftpusers和user_list两个文件的说明以及vsftpd.conf中的userlist_enable和userlist_deny两个配置项的解释
    Windows10搭建FTP服务器
    fdisk分区的起始扇区为什么是2048——linux 分区与启动的小故事
    P740SAS卡报错的处理
    linux 下route命令
    实验01:构建FTP服务器
    IBMx86 x3850 7143机器面板PCI灯亮
    css的选择器汇总
  • 原文地址:https://www.cnblogs.com/the-wang/p/7120618.html
Copyright © 2011-2022 走看看