使用JAXP DOM读取XML文档教程
作者:ade 日期:2010-11-25
本教程不是使用JDOM,DOM4J等工具解析XML文档的演示,而是仅使用Java API进行,使用的是jdk自带的JAXP,后面视频中没有写JAXP DOM部分,直接说是Java dom api,说的是一个事.
我们使用一个简单的xml文档,书籍列表books.xml: Xml文件结构为<books><book><title /><author /></book></books>,详细见源码。
根据W3C的标准,要想操纵XML文档,需要获得对应的XML文档的Document实例.
方法如下:
//通过 DocumentBuilderFactory获得DocumentBuilder实例
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); dbf.setIgnoringElementContentWhitespace(true);
DocumentBuilder docbuilder = dbf.newDocumentBuilder();
//通过DocumentBuilder实例,其实就是解析器,获得xml文件的Document实例
Document doc = docbuilder.parse(new File("books.xml"));
其中dbf.setIgnoringElementContentWhitespace(true);是用来设置是否忽略掉元素中的空白和换行的,并且这个方法只有xml文档是有效的,也就是xml 文档使用了dtd验证才有效,否则无效.经过试验发现,使用xsd也是无效的。
获得了Document实例后,
//获得根元素
Element root = doc.getDocumentElement();
//获得所有book元素
NodeList books = root.getChildNodes();
//使用for循环将所有书的信息都输出出来
StringBuilder strb = new StringBuilder();
Node title = null;
Node author = null;
for(int i=0;i<books.getLength();i++)
{
title = books.item(i).getChildNodes().item(0);
author = books.item(i).getChildNodes().item(1);
strb.append("第"+(i+1)+"本书的信息如下:\n");
strb.append("书名:"+title.getTextContent()+"\t作者:"+author.getTextContent()+"\n");
}
System.out.println(strb.toString());
输出信息如下:
第1本书的信息如下:
书名:Hello world 作者:ade
第2本书的信息如下:
书名:Historycreator.com你好世界 作者:qqqq
本文原创,转载请注明转自:www.historycreator.com
本文配套视频教程和源码下载地址为: