【安卓7】XML文件解析——DOM解析

DOM解析

       DOM ——Document Object Model(文档对象模型)

               ——提供一套用于解析XML文档的API

               ——按照XML定义的标记块来创建对象实例并设置相应的属性

               ——可以按照标记块的层次结构来创建对象的层次结构

DOM解析相关类/接口

         解析XML——包:javax.xml.parsers / org.w3c.dom

  1. DocumentBuilderFactory类DOM文档解析器的工厂类,用于创建解析器对象
  2. DocumentBuilder类DOM文档解析类,用于解析XML文档
  3. Document:文档实体接口
  4. Element类:代表文档的一个元素
  5. Node类:代表DOM模型中的实体的主要数据模型,既可是元素也可以是属性项
  6. NodeList类:节点列表
  7. DocumentBuilderFactory.newInstance();

 DOM解析常用方法

  • DocumentBuilderFactory.newInstance();          

    作用:创建文档模型工厂对象

  • DocumentBuilderFactory. newDocumentBuilder();

           作用: 创建解析器对象

  • DocumentBuilder.parse(InputStream is);

           作用: 将输入流代表的XML文档加载到内存中

  • DocumentBuilder.getDocumentElement();

           作用: 获得根元素

  • ElementgetChildNodes();

           作用: 获得当前元素的所有子节点元素。返回一个NodeList类型的对象

  • NodeList.item(i);

           作用: 返回节点列表中索引值为i的列表项

  • Node.getNodeType();

           作用: 获得节点类型

  • ElementgetAttribute(String s);

           作用: 获得指定属性的属性名称

  • ElementgetFristChild().getNodeValue();

           作用: 获得当前属性的数据

DOM解析代码

xml文件

java代码

 1 protected void onCreate(Bundle savedInstanceState) {
 2         super.onCreate(savedInstanceState);
 3         try {
 4             //获得解析xml的对象
 5             DocumentBuilder db=DocumentBuilderFactory.newInstance ().newDocumentBuilder ();
 6             InputStream is=getResources().openRawResource(R.raw.xml文件名); //读取资源文件
 7             Document doc=db.parse(is);     //将整个XML文档加载到内存
 8             NodeList list=doc.getElementsByTagName("book");    //获取所有为book的节点
 9             for (int i=0;i<list.getLength();i++){
10                 Element e=(Element) list. item(i);
11                 Node name=e.getElementsByTagName("name").item(0);
12                 //获得当前属性的数据
13                 String value=name.getFirstChild().getNodeValue();
14                 Toast.makeText(类名.this, value, 1000).show();
15             }
16         } catch (ParserConfigurationException e) {
17             e.printStackTrace();
18         } catch (SAXException e) {
19             e.printStackTrace();
20         } catch (IOException e) {
21             e.printStackTrace();
22         }
23 }
DOM解析
原文地址:https://www.cnblogs.com/leelee/p/6994676.html