XML解析
一、XML解析
- XML解析方式分为两种:dom和sax
dom:(Document Object Model,即文档对象模型)
,处理XML的一种方式sax:(Simple API for XML)
不是官方标准,但它是XML社区事实上的标准几乎所有的XML解析器都支持它。
- XML解析开发包
- Jaxp、Jdom、dom4j
1、DOM解析
DOM模型
DOM解析器在解析XMl文档时,会把文档中的所有元素,按照其出现的层次关系,解析成一个个Node对象(节点)。
优点:把Xml文件在内存中构造树形结构,可以遍历和修改节点
缺点:如果文件比较大,内存有压力,解析的实际时间比较长
DOM编程步骤
-
调用
DocumentBuilderFactory.newInstance()方法
得到创建DOM解析器的工厂。 -
调用
工厂对象的newDocumentBuilder方法
得到DOM解析器对象。 -
调用
DOM解析器对象的parse()方法
解析XML文档,得到代表整个文档的Document对象,就可以利用DOM特性对整个XMl文档进行操作了。
代码:
MyXml.xml
<?xml version="1.0" encoding="UTF-8"?>
<employees>
<employee id="0">
<name>Alexia</name>
<age>23</age>
<sex>Female</sex>
<weight>150</weight>
<weight><a>160</a></weight>
</employee>
<employee id="1">
<name height="178">Edward</name>
<age>24</age>
<sex>Male</sex>
</employee>
<employee id="2">
<name>Tom</name>
<age>20</age>
<sex>Female</sex>
</employee>
<employee id="3">
<name>Admin</name>
<age>21</age>
<sex>Male</sex>
</employee>
</employees>
DOMXml.java
import javax.xml.parsers.*;
import org.w3c.dom.*;
/*
* Dom解析XML
*
* @author USE
*/
public class DOMXml {
public static void main(String[] args) throws Exception {
//获得创建DOM解析器的工厂
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
//设置由此工厂生成的解析器,忽略注释
dbf.setIgnoringComments(true);
//忽略空格
dbf.setIgnoringElementContentWhitespace(true);
//调用工厂对象的方法获取DOM解析器对象
DocumentBuilder builder = dbf.newDocumentBuilder();
//调用DOM解析器对象解析XML文档,获取文档Document
Document doc = (Document) builder.parse("src/com/MyXml.xml");
//获得根节点
Element root = doc.getDocumentElement();
System.out.println(root.getTagName());
//根据标签名获得结点
NodeList nodeList = doc.getElementsByTagName("employee");
System.out.println("employess节点的个数:"+nodeList.getLength());
//遍历nodeList
for(int i=0;i<nodeList.getLength();i++){
Element element = (Element)nodeList.item(i);
//获得id属性值
String attribute = element.getAttribute("id");
System.out.println("id:" + attribute);
//获取第一个employee
if(i==0){
//获得元素下面的name文本
System.out.println(