• 二、DOM方式解析XML


    在Java 程序中读取 XML 文件的过程称为解析 XML

    一、 解析 XML 文件的方式

    1) DOM 解析 (java 官方提供)

    2) SAX 解析(java 官方提供)

    3) JDOM 解析(第三方提供)

    4) DOM4J 解析(第三方提供)

    二、DOM 解析 XML 的步骤

    1) 创建一个 DocumentBuilderFactory 的对象

    2) 创建一个 DocumentBuilder 对象

    3) 通过 DocumentBuilder 的 parse(...)方法得到 Document 对

    4) 通过 getElementsByTagName(...)方法获取到节点的列表

    5) 通过 for 循环遍历每一个节点

    6) 得到每个节点的属性和属性值

    7) 得到每个节点的节点名和节点值

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <books>
     3     <book id="1001">
     4         <name>软件工程</name>
     5         <author>王一一</author>
     6         <price>66</price>
     7     </book>
     8     <book id="1002">
     9         <name>计算机网络</name>
    10         <author>乔二二</author>
    11         <price>89</price>
    12     </book>
    13 </books>
     1 public class TestDOMParse {
     2     public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException {
     3     //    1)    创建一个DocumentBuilderFactory的对象
     4         DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
     5     //    2)    创建一个DocumentBuilder对象
     6         DocumentBuilder db=dbf.newDocumentBuilder();
     7     //    3)    通过DocumentBuilder的parse(...)方法得到Document对象
     8         Document doc=db.parse("book.xml");
     9     //    4)    通过getElementsByTagName(...)方法获取到节点的列表
    10         NodeList bookList=doc.getElementsByTagName("book");
    11         //System.out.println(bookList.getLength());
    12     //    5)    通过for循环遍历每一个节点  
    13         for(int i=0;i<bookList.getLength();i++){
    14             //6)    得到每个节点的属性和属性值
    15             Node book=bookList.item(i);
    16             NamedNodeMap attrs=book.getAttributes(); //得到了属性的集合
    17             //循环遍历每一个属性
    18             for(int j=0;j<attrs.getLength();j++){
    19                 //得到每一个属性
    20                 Node id=attrs.item(j);
    21                 System.out.println("属性的名称:"+id.getNodeName()+"	"+id.getNodeValue());
    22             }
    23         }
    24     System.out.println("
    每个节点的名和节点的值");
    25 //        7)    得到每个节点的节点名和节点值
    26     for(int i=0;i<bookList.getLength();i++){
    27         //得到每一个book节点
    28         Node book=bookList.item(i);
    29         NodeList subNode=book.getChildNodes();
    30         System.out.println("子节点的个数:"+subNode.getLength());
    31         //使用for循环遍历每一book的子节点
    32         for(int j=0;j<subNode.getLength();j++){
    33             Node childNode=subNode.item(j);
    34             //System.out.println(childNode.getNodeName());
    35             short type=childNode.getNodeType(); //获取节点的类型
    36             if(type==Node.ELEMENT_NODE){
    37                 System.out.println("节点的名称:"+childNode.getNodeName()+"	"+childNode.getTextContent());
    38             }
    39             
    40         }
    41     }
    42 
    43     }
    44 }

  • 相关阅读:
    mwutil公用方法库——dateTool
    mwutil公用方法库文档——cookieTool
    mwutil 公用方法库文档 ——arrayTool
    localstorage封装!
    github commit 规范
    你好,C++(40)7.1 一切指针都是纸老虎:彻底理解指针
    你好,C++(39)6.4.4 依葫芦画瓢:用C++表达设计结果(下)
    你好,C++(38)从问题描述中发现对象的属性和行为 6.4 工资程序成长记:类与对象(上)
    你好,C++(37)上车的人请买票!6.3.3 用虚函数实现多态
    你好,C++(36)人参再好,也不能当饭吃!6.3 类是如何面向对象的
  • 原文地址:https://www.cnblogs.com/qiaoxin11/p/12705500.html
Copyright © 2020-2023  润新知