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