Java XML解析系列

Java解析XML有多种方式,因此需要分为几个不同的系列来讲。具体安排如下:

1. DOM最基本解析XML;
2. SAX基于事件解析XML;[url]http://gaofulai1988.iteye.com/blog/2262677[/url]
3. JDOM不错的解析XML;[url]http://gaofulai1988.iteye.com/blog/2262680[/url]
4. DOM4J好用的解析XML;[url]http://gaofulai1988.iteye.com/blog/2262683[/url]
5. XPATH解析XML;[url]http://gaofulai1988.iteye.com/admin/blogs/2262787[/url]
6. XML与Bean之间的转换。[url]http://gaofulai1988.iteye.com/admin/blogs/2262787[/url]

这一个是讲DOM解析XML,DOM的基本思想是将XML文档解析成一个树型,然后依据父子节点、弟兄节点来遍历这棵树。所以它的最大特点是在解析前,先将整个文档载入,这也是它最大的不足之处,如果这个XML文件很大,怎么办呢?

在使用DOM之前,有两种概念提前说一下,Node(节点)和Element(元素)之间的区别,有一个结论是:[b]Element一定是Node,Node不一定是Element[/b]。如何来理解?


<name>test</name>


name既是一个节点也是一个元素,而test只是一个节点,而不是一个元素。

好了,看一个例子吧。先准备好xml文件。


<?xml version="1.0" encoding="UTF-8"?>
<Students>
<student>
<NO id="123">123456</NO>
<NAME>abc</NAME>
</student>
<student>

<NO id="234">456789</NO>
<NAME>def</NAME>
</student>
</Students>


DOM解析代码如下:

public static void main(String args[]) throws ParserConfigurationException,
SAXException, IOException {
// xml文件的路径
File f = new File("D:" + File.separator + "test.xml");
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
// 解析成一个Document对象
Document doc = builder.parse(f);
// 根据标签名获取所有的节点
NodeList nl = doc.getElementsByTagName("student");

for (int i = 0; i < nl.getLength(); i++) {
// 输出标签的值
System.out.print("No:"
+ doc.getElementsByTagName("NO").item(i).getFirstChild()
.getNodeValue());

System.out.print("\taddress:"
+ doc.getElementsByTagName("NAME").item(i).getFirstChild()
.getNodeValue());
// Element一定是Node, Node不一定是Element
Element e=(Element)doc.getElementsByTagName("NO").item(i);
// 输出属性值
System.out.println("\tid="+e.getAttribute("id"));
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值