Dom解析Xml方法

DOM解析原理及结构模型

  • 解析原理
  • XML DOM 和 HTML DOM一样,XML DOM 将整个XML文档加载到内存,生成一个DOM树,并获得一个Document对象,通过Document对象就可以对DOM进行操作。以下面books.xml文档为例。

使用步骤

  1. 导入jar包 dom4j-1.6.1j.jar
  2. 创建解析器
  3. 读取xml 获得document对象
  4. 得到根元素
  5. 根据根元素获取对于的子元素或者属性

常用的方法

1.创建解析器对象: SAXReader sr = new SAXReader();
2.读取xml文件进行解析,生成Document对象---使用SAXReader方法
    Document read(String fileName);
3.使用Document对象获取根元素
    Element getRootElement();
4.使用元素获取子元素--->使用Element方法
    public List elements()     				: 获取当前元素的所有子元素
    public String getName()					: 获取元素的元素名
    public String getText()					: 获取当前元素的文本值
    public String attributeValue(String name)	: 获取当前元素下某个属性的值,传入属性名
    public Element element(String name)		: 根据元素名获取指定子元素(如果有多个就获取到第一个)
    public String elementText(String name)	: 获取指定子元素的文本值,参数是子元素名称

方法演示

xml代码

<?xml version="1.0" encoding="utf-8" ?>
<books>
    <book id="0001">
        <name>JavaWeb开发教程</name>
        <author>张孝祥</author>
        <sale>100.00</sale>
    </book>
    <book id="0002">
        <name>三国演义</name>
        <author>罗贯中</author>
        <sale>100.00</sale>
    </book>
</books>

解析

public class Test {
    public static void main(String[] args) throws Exception{
        /*
            Dom4j解析xml文件步骤:
                1.下载Dom4j的jar包
                2.把jar包拷贝到模块的lib目录下,并添加到classpath路径中
                3.创建解析器对象
                4.使用解析器对象读取xml文件到内存中,生成Document对象
                5.根据Document对象获取根元素
                6.使用根元素获取下面的子元素或者属性,依次类推...

           常用的方法:
                1.创建解析器对象: public SAXReader();
                2.读xml文件,生成Document对象---->使用SAXReader的方法
                   Document read(String fileName);
                3.根据Document对象获取根元素--->使用Document的方法
                   Element getRootElement();
                4.使用根元素获取下面的子元素或者属性--->使用Element的方法
                        public List elements()     				: 获取当前元素的所有子元素
                        public String getName()					: 获取元素的元素名
                        public String getText()					: 获取当前元素的文本值
                        public String attributeValue(String name)	: 获取当前元素下某个属性的值,传入属性名

                        public Element element(String name)		: 根据元素名获取指定子元素(如果有多个就获取到第一个),传入子标签名
                        public String elementText(String name)	: 获取指定子元素的文本值,参数是子元素名称,传入子标签名
         */
        // 1.创建解析器对象
        SAXReader sr = new SAXReader();

        // 2.读xml文件,生成Document对象
        Document document = sr.read("day14\\book.xml");

        // 3.根据Document对象获取根元素
        Element rootE = document.getRootElement();
        System.out.println("根标签名:"+rootE.getName());// 根标签名:books

        // 4.使用根元素获取下面的子元素或者属性
        List<Element> list = rootE.elements();// 获取根标签下的2个book标签

        // 5.循环遍历根标签下的2个book标签
        for (Element e : list) {
            System.out.println("根标签下的子标签名:"+e.getName());// book book
            System.out.println("根标签下的book标签的属性值:"+e.attributeValue("id"));// 0001 0002
            // 获取book标签下面的所有子标签
            List<Element> bookElements = e.elements();// name,author,sale
            // 循环遍历
            for (Element element : bookElements) {
                // 获取book标签的子标签名
                System.out.println("book标签的子标签名:"+element.getName());
                // 获取book标签的子标签的文本内容
                System.out.println("book标签的子标签的文本内容:"+element.getText());
            }
            System.out.println("==============");
        }

        // 获取第一个book标签
        Element bookE = list.get(0);

        // 直接通过book标签获取作者标签
        Element authorE = bookE.element("author");
        System.out.println(authorE.getName()+":"+authorE.getText());// author:张孝祥

        // 直接通过book标签获取作者标签的文本内容
        String text = bookE.elementText("author");
        System.out.println(text);// 张孝祥

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值