Dom4j解析xml小例子

1、xml的内容为

<?xml version="1.0" encoding="utf-8"?>

<!--  Copyright w3school.com.cn -->
<!-- W3School.com.cn bookstore example -->
<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" cover="paperback"> 
    <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>

2、下载dom4j的jar包

dom4j.jar 和jaxen.jar

下面是java的代码

package com.java.test;

import java.io.File;
import java.util.Iterator;
import java.util.List;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;

public class Dom4jTest {

	/**
	 * @param args
	 * @throws Exception 
	 */
	public static void main(String[] args) throws Exception {
		//1、回去到document对象、方法有三
		//1.1
		SAXReader reader=new SAXReader();
		Document document=reader.read(new File("books.xml"));
		//1.2
//		Document document=DocumentHelper.parseText(text);
		//1.3
//		DocumentHelper.createDocument();
		
		//2、回去跟节点
		Element rootElement = document.getRootElement();
		//回去根节点的书信
//		rootElement.attributes();
//		rootElement.attribute(qname);
		//3、根节点下所有的子节点
//		List<Element> elements = rootElement.elements();
		List elements = rootElement.elements();
//		Iterator elementIterator = rootElement.elementIterator();
		//4、获取节点的内容
//		rootElement.getText();
		
		
		//解析整个xml的代码为:
		
		Iterator elementIterator = rootElement.elementIterator();
		while (elementIterator.hasNext()) {
			System.out.println("--------------------------");
			Element element=(Element) elementIterator.next();
			List attrs = element.attributes();
			for (int i = 0; i < attrs.size(); i++) {
				String name = ((Attribute)attrs.get(i)).getName();
				String value = ((Attribute)attrs.get(i)).getValue();
				System.out.println(name+"="+value);
			}
			
			List list = element.elements();
			for (int i = 0; i < list.size(); i++) {
				String text = ((Element)list.get(i)).getText();
				System.out.println(text);
			}
			System.out.println("--------------------------");
		}
		
		String text = rootElement.selectSingleNode("//price").getText();
		System.out.println("price="+text);
		
		List selectNodes = rootElement.selectNodes("//price");
		for (int i = 0; i <selectNodes.size(); i++) {
			String priceString = ((Node)selectNodes.get(i)).getText();
			System.out.println(priceString);
		}
	}
	

}

结果输出如下:

--------------------------
category=children
Harry Potter
J K. Rowling
2005
29.99
--------------------------
--------------------------
category=cooking
Everyday Italian
Giada De Laurentiis
2005
30.00
--------------------------
--------------------------
category=web
cover=paperback
Learning XML
Erik T. Ray
2003
39.95
--------------------------
--------------------------
category=web
XQuery Kick Start
James McGovern
Per Bothner
Kurt Cagle
James Linn
Vaidyanathan Nagarajan
2003
49.99
--------------------------
price=29.99
29.99
30.00
39.95
49.99


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值