XML解析之DOM解析

XML解析方式有两种,分别是DOM解析与SAX解析。
DOM解析是根据XML文档的结构,将整个XML文档加载进入内存中,按文档结构的顺序来解析XML。DOM操作也能对XML文档数据进行操作。
DOM解析可以随机访问XML某节点的数据,但缺点是如果xml文件比较大,或者结构比较复杂时,对内存的要求会比较高。

下面对bookstore.xml进行解析,xml结构如下
<pre name="code" class="html"><?xml version="1.0" encoding="ISO-8859-1"?>

<bookstore>

<book category="children">
  <title lang="en">Harry Potter</title> 
  <author>J K. Rowling</author> 
  <year>2005</year> 
  <price>29.99</price>
</book>

<book category="cooking">
  <title lang="en">Everyday Italian</title> 
  <author>Giada De Laurentiis</author> 
  <year>2005</year> 
  <price>30.00</price> 
</book>

<book category="web">
  <title lang="en">Learning XML</title> 
  <author>Erik T. Ray</author> 
  <year>2003</year> 
  <price>39.95</price> 
</book>

<book category="web">
  <title lang="en">XQuery Kick Start</title> 
  <author>James McGovern</author> 
  <author>Per Bothner</author> 
  <author>Kurt Cagle</author> 
  <author>James Linn</author> 
  <author>Vaidyanathan Nagarajan</author> 
  <year>2003</year> 
  <price>49.99</price> 
</book>

</bookstore>


 
public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException {

		/*使用dom解析xml步骤:
		 * 1、建立DocumentBuilderFactory
		 * 2、建立DocumentBuilder
		 * 3、建立Document
		 * 4、建立NodeList
		 * 5、进行XML信息读取
		 */
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		DocumentBuilder builder = factory.newDocumentBuilder();
		Document doc = builder.parse("D:"+File.separator+"Books_XML.xml");
		NodeList nl = doc.getElementsByTagName("book");
		String title ,author,year,price;
		for(int i=0;i<nl.getLength();i++){
			NodeList titlenl = doc.getElementsByTagName("title");
			NodeList authornl = doc.getElementsByTagName("author");
			NodeList yearnl = doc.getElementsByTagName("year");
			NodeList pricenl = doc.getElementsByTagName("price");
			title = titlenl.item(i).getFirstChild().getNodeValue();
			author = authornl.item(i).getFirstChild().getNodeValue(); 
			year = yearnl.item(i).getFirstChild().getNodeValue(); 
			price = pricenl.item(i).getFirstChild().getNodeValue(); 
			System.out.println("书名:"+title+" 作者:"+author+" 日期:"+year+" 价格:"+price);
		}
	}


书名:Harry Potter 作者:J K. Rowling 日期:2005 价格:29.99
书名:Everyday Italian 作者:Giada De Laurentiis 日期:2005 价格:30.00
书名:Learning XML 作者:Erik T. Ray 日期:2003 价格:39.95
书名:XQuery Kick Start 作者:James McGovern 日期:2003 价格:49.99


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值