第一部分:XML初步

  • XML解析技术
    • XML解析方式

dom:(Document Object Model, 即文档对象模型) 是 W3C 组织推荐的处理 XML 的一种方式。

它下面有两个分支:jDom与dom4j

它们可都可以对xml文件进行增删改查的操作

sax: (Simple API for XML) 不是官方标准,但它是 XML 社区事实上的标准,几乎所有的 XML 解析器都支持它。

只能进行解析(查询)

pull:  Pull解析和Sax解析很相似,都是轻量级的解析,它是一个第三方开源的Java项目,但在Android的内核中已经嵌入了Pull 。

只能进行解析(查询)

 

  • XML解析技术体系

第二部分:XML DOM解析

  1. DOM中对象接口关系图

l Node:xml文件所有对象的根接口  节点

l Document:代表xml文件的整个内容的对象的接口

l Element:代表某个元素或标签的对象的接口

l Attr:代表某个元素的某个属性对象的接口

l Text:代表标签体文本标签本对象的接口

 

l NodeList:代表包含多个Node接口对象的集合对象

2.主要方法概览

Node

appendChild(newChild)

将新的节点添加为最后一个子节点

 

insertBefore(newChild,refChild)

在某个子节点前插入一个新子节点

 

removeChild(oldChild)

删除指定的某个子节点

 

replaceChild(newChild,oldChild)

将指定的子节点替换成新的子节点

 

setTextContent(textContent)

设置文本内容(一般用在元素对象上)

 

getNodeName()

得到节点名称(一般用在元素对象上)

 

getParentNode()

得到父节点(一般用在元素对象上)

 

getTextContent()

得到文本内容(一般用在元素对象上)

 

getFirstChild()

得到第一个子节点

 

getLastChild()

得到最后一个子节点

 

getNextSibling()

得到下一个兄弟节点

 

getPreviousSibling()

得到上一个兄弟节点

 

Document

createElement(name)

创建一个指定名称的标签对象返回

 

getDocumentElement ()//getRootElement()

得到文档的根元素对象

 

getElementById(id)

根据子元素的id属性找到对应的子元素

 

getElementsByTagName(name)

根据标签名得到对应的子标签的集合

Element

 

 

 

setAttribute(name, value)

设置元素的属性名和属性值

 

removeAttribute(attrName)

根据属性名删除对应的属性

 

getAttribute(attrName)

根据属性名得到对应的属性

 

getElementsByTagName(name)

根据标签名得到对应的子标签的集合

 

getTagName()

得到标签名

Attr、Text

极少直接操作这两个接口的对象,一般通过Element对象来操作

NodeList

getLength()得到包含的节点对象的个数 item(index)根据下标得到某个节点

 

3.练习:读取id为008的学生的年龄

<?xml version="1.0" encoding="UTF-8"?>

<class>

<student id="007">

<name>王五</name>

<age>18</age>

</student>

<student id="008">

<name>张三</name>

<age>23</age>

</student>

</class>

 

4.提示:获取解析器对象

javax.xml.parsers包中的DocumentBuilder类用于加载xml文件,并产生一个Document对象

 

//创建一个xml文档解析器工厂对象

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

 

//通过工厂创建一个xml文档解析器对象

DocumentBuilder builder = factory.newDocumentBuilder();

 

//通过解析器对象解析一个文件对象得到Document对象

Document document = builder.parse(new File("d:/users.xml"));