Dom4j解析xml实例

import java.io.File;
import java.util.Iterator;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

/**
 * dom4j 解析xml
 * @author Administrator
 *
 */
public class Dom4j_xml {
	public static void main(String[] args) {
		String xml = "<?xml version='1.0' encoding='gb2312'?><头部><书籍><小说><名称>红楼梦</名称><价格>20</价格><作者>曹雪芹</作者></小说><课本><学科>语文</学科><价格>50</价格><年级>小学一年级</年级></课本></书籍><书籍><小说><名称>西游记</名称><价格>30</价格><作者>吴承恩</作者></小说><课本><学科>数学</学科><价格>60</价格><年级>小学二年级</年级></课本></书籍><书籍><小说><名称>三国演义</名称><价格>70</价格><作者>罗贯中</作者></小说><课本><学科>英语</学科><价格>80</价格><年级>小学三年级</年级></课本></书籍></头部>";
		boolean xmlFlag = new Dom4j_xml().readStringXml(xml);
		if(xmlFlag){
			System.out.println("解析成功");
		}else{
			System.out.println("解析失败");
		}
	}
	
	/**
	 * 解析xml
	 * @param xml
	 * @return
	 */
	private boolean readStringXml(String xml){
		try{
			Document doc = null;
			//读取xml文件转doc(xml文档)
			if("".equals(xml)||xml==null){
				SAXReader reader = new SAXReader();
				doc = reader.read(new File("F:\\file\\log4j.xml"));
			//取xml字符串转doc(xml文档)
			}else{
				doc = DocumentHelper.parseText(xml);
			}
			
			//获取根节点
			Element rootElt = doc.getRootElement();
			//取根节点的名称
			System.out.println("<<根节点名称>>:"+rootElt.getName());
			//取根节点下的子节点
			Iterator iter = rootElt.elementIterator("书籍");
			//循环遍历所有书籍节点
			while(iter.hasNext()){
				//拿到书籍节点
				Element recordEle = (Element) iter.next();
				System.out.println("<<书籍节点>>:"+recordEle.getName());
				//取书籍下的小说节点
				Iterator xs_iter = recordEle.elementIterator("小说");
				while(xs_iter.hasNext()){
					Element xs_recordEle = (Element) xs_iter.next();
					System.out.println("小说名称:"+xs_recordEle.elementTextTrim("名称"));
					System.out.println("小说价格:"+xs_recordEle.elementTextTrim("价格"));
					System.out.println("小说作者:"+xs_recordEle.elementTextTrim("作者"));
				}
				
				//取书籍下的课本节点
				Iterator kb_iter = recordEle.elementIterator("课本");
				while(kb_iter.hasNext()){
					Element kb_recordEle =  (Element) kb_iter.next();
					System.out.println("课本学科:"+kb_recordEle.elementTextTrim("学科"));
					System.out.println("课本价格:"+kb_recordEle.elementTextTrim("价格"));
					System.out.println("课本年级:"+kb_recordEle.elementTextTrim("年级"));
				}
			}
			return true;
		}catch(Exception e){
			e.printStackTrace();
			
		}
		return false;
	}
}

所需jar包 dom4j

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值