第一部分: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解析
- 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")); |