XML(四)dom4j解析XML
使用dom4j须要导入jar包
jar包下载地址:http://pan.baidu.com/s/1o65jWRw
将dom4j-1.6.1.jar包导入Eclipse
book2.xml
<?xml version="1.0" encoding="UTF-8"?> <书架> <书> <书名>JAVA</书名> <作者>XXXXXX</作者> <售价>23333</售价> </书> <书> <书名>ANDROID</书名> <作者>XXXXXX</作者> <售价>23333</售价> </书> </书架>
解析book2.xml这个文件。
方法:
获取文档的根结点:
Element root = document.getRootElement();
获取某个结点的子节点
Element element = root.element();
获取某个结点下的全部子节点:
List elements = root.elements();
遍历该结点下的全部子节点
以递归的方式进行
public class dom4j { public static void main(String[] args) throws Exception { // method_1(); method_2(); } private static void method_2() throws Exception { SAXReader reader = new SAXReader(); Document document = reader.read("book2.xml"); Element root = document.getRootElement(); parse(root); } private static void parse(Element ele) { // 处理当前元素包括的全部属性 parseAttribute(ele); // 获取当前元素包括的全部 List el = ele.elements(); for (Object e : el) { Element element = (Element) e; // 假设该元素的内容不是仅仅包括字符串 if (!element.isTextOnly()) { parse(element); } else { // 处理当前 元素的所有属性 parseAttribute(element); // 获取当前元素的内容 System.out.println(element.getQName().getName() + "-->" + element.getText()); } } } /** * 处理元素属性 * * @param ele */ private static void parseAttribute(Element ele) { List attributes = ele.attributes(); for (Object e : attributes) { Attribute attribute = (Attribute) e; System.out.println(ele.getQName().getName() + "元素的" + attribute.getQName().getName() + "属性为" + attribute.getValue()); } } private static void method_1() throws Exception { // 获取解析器 SAXReader reader = new SAXReader(); // 解析xml获代替表整个文档的dom对象 Document document = reader.read("book2.xml"); // 获取根结点 Element rootElement = document.getRootElement(); // 获取书名 String bookName = rootElement.element("书").element("书名").getText(); System.out.println("bookName--: " + bookName); } }