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 = "<头部><书籍><小说><名称>红楼梦<价格>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

你可能感兴趣的:(java程序)