Dom4j解析1

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiangshuai198807/article/details/82148635

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

<书架> 
  <书 出版社="renming"> 
    <书名>金</书名>  
    <作者>陈MM</作者>  
    <单价>10</单价>  
    <批发价>20</批发价> 
  </书>  
  <书> 
    <书名>葵花宝典</书名>  
    <作者>东方不败</作者>  
    <单价>10</单价> 
  </书> 
</书架>
 

package com.xiangshuai.dom4jjx;

import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;
import org.junit.Test;

public class TestDom4j {
    @Test// 1、得到某个具体的节点内容:第2本书的书名--》葵花宝典
    public void test1() throws DocumentException{
         SAXReader reader = new SAXReader();//创建一个xml解析对象
         Document document = reader.read("src/Book.xml");//把xml文档加载到document对象中
         Element root = document.getRootElement();
        /* Element bookNode = root.element("书");
         System.out.println(bookNode.getName());*/
         List list = root.elements();//得到当前节点的所有子节点
         Element secondBook = (Element) list.get(1);//得到第二本书对象
         String name = secondBook.element("书名").getText();//得到当前节点的文本内容
         System.out.println(name);
    }
    
    @Test // 2、遍历所有元素节点
    public void test2() throws DocumentException{
        SAXReader reader = new SAXReader();//创建一个xml解析对象
         Document document = reader.read("src/Book.xml");//把xml文档加载到document对象中
         Element root = document.getRootElement();
         treeWalk(root);
    }

    private void treeWalk(Element ele) {
        System.out.println(ele.getName());//输出当前节点的名子
        for (int i = 0; i < ele.nodeCount(); i++) {//ele.nodeCount()得到当前节点的所有子节点的数量
            Node node = ele.node(i);//取出下标为i的节点 
            if(node instanceof Element){//判断当前节点是否为标签
                treeWalk((Element)node);//把node强转为标签(Element)
            }else{
                System.out.println(node.getText());
            }
        }
    }
    
}
 

猜你喜欢

转载自blog.csdn.net/xiangshuai198807/article/details/82148635