2.通过DOM4j解析---读取xml文件信息

1.项目结构
这里写图片描述
dom4j包下载地址:dom4j包下载

2.xml文件内容:

<?xml version="1.0" encoding="UTF-8"?>
<file-list>
    <file id='001' name="sql">
        <ids>001</ids>
        <names>数据库原理</names>
        <prices>28.5</prices>
    </file>
    <file id="002">
        <ids>002</ids>
        <names>java程序设计</names>
        <prices>31.7</prices>
    </file>
</file-list>

3.读取XML文件 :
相关类和方法:

        SAXReader类: read():读取xml文档
        节点信息:
                nodeIterator(): 获取当前标签下的子节点
        标签信息:
                getName(): 得到标签名称
                element(name); 获取当前标签下的指定名称的第一个子标签
                elementIterator(name); 获取当前标签下的指定名称的所有子标签
                elements();    获取当前标签下的所有子标签
        属性信息:
                attributeValue(name): 获取指定属性名的属性值
                attribute(name); 获取指定属性名的属性对象
                attributes(): 获取所有属性对象。返回List集合
                attributeIterator(): 获取所有属性对象。返回Iterator
                getName():获取属性名称
                getValue(): 获取属性值
        文本信息:
                getText(): 获取标签的文本内容

================================================

public class ReadXmlDemo1 {

    /**
     * @param args
     * @throws DocumentException
     */
    public static void main(String[] args) throws DocumentException {
        // TODO Auto-generated method stub
        // 1.创建SAXReader(解析器对象)
        SAXReader reader = new SAXReader();
        // 2.调用read方法,读取xml文件
        Document document = reader.read("./src/File.xml");
        System.out.println(document);
        // 3.1获取根标签元素
        Element root = document.getRootElement();
        System.out.println(root);
        // 3.2 获取标签名称
        System.out.println(root.getName());
        // 4.获取第一个字标签
        Element fileEle = root.element("file");
        System.out.println(fileEle);
        // 5.获取所有子标签(根据指定的名称获取所有同名子标签)
        List<Element> list = root.elements("file");
        // 1)for-each循环
        for (Element e : list) {
            System.out.println(e);
        }
        // 5.2 获取所有子标签(不指定名称)
        System.out.println("==全==部==子==标==签==");
        List<Element> eList = root.elements();
        for (Element e : eList) {
            System.out.println(e);
        }
        System.out.println("===================");

        // 6.获取标签的属性值:
        String value = fileEle.attributeValue("id");
        System.out.println(value);
        // 7.根据属性名称获取属性对象
        // 7-1.拿到标签对象
        // 上文已经获得--->fileEle
        // 7-2.拿到属性对象
        Attribute idAttr = fileEle.attribute("id");
        // 7-3.通过属性对象拿到 属性名
        String idName = idAttr.getName();
        // 7-4.通过属性对象拿到 属性值
        String idValue = idAttr.getValue();
        System.out.println(idName + "=" + idValue);
        // 8.获取第一个标签的所有属性对象
        List<Attribute> attrList = fileEle.attributes();
        for (Attribute attr : attrList) {
            System.out.print(attr.getName() + "=" + attr.getValue() + "   ");
        }
        // 9.读取标签中包含的文本
        String str1 = fileEle.getText();
        System.out.println("\n==file标签的文本如下==");
        System.out.println(str1);// 所得结果中会包含xml中的空格元素
        System.out.println("------------------");
        /**
         * 读取文本: 注意: 获取文本,要先获取文本所在的标签对象
         */
        // 1.1 拿到所在标签上的文本内容
        Element nameElem = document.getRootElement().element("file").element("names");
        String fileText = nameElem.getText();
        System.out.println(fileText);

        // 1.2 通过父标签获取指定子标签的文本内容
        Element conElem = document.getRootElement().element("file");
        fileText = conElem.elementText("prices");
        System.out.println(fileText);
    }
}

运行结果:

org.dom4j.tree.DefaultDocument@1c99159 [Document: name ./src/File.xml]
org.dom4j.tree.DefaultElement@65a77f [Element: <file-list attributes: []/>]
file-list
org.dom4j.tree.DefaultElement@1d7ad1c [Element: <file attributes: [org.dom4j.tree.DefaultAttribute@a61164 [Attribute: name id value "001"], org.dom4j.tree.DefaultAttribute@bfc8e0 [Attribute: name name value "sql"]]/>]
org.dom4j.tree.DefaultElement@1d7ad1c [Element: <file attributes: [org.dom4j.tree.DefaultAttribute@a61164 [Attribute: name id value "001"], org.dom4j.tree.DefaultAttribute@bfc8e0 [Attribute: name name value "sql"]]/>]
org.dom4j.tree.DefaultElement@18fd984 [Element: <file attributes: [org.dom4j.tree.DefaultAttribute@111a775 [Attribute: name id value "002"]]/>]
==全==部==子==标==签==
org.dom4j.tree.DefaultElement@1d7ad1c [Element: <file attributes: [org.dom4j.tree.DefaultAttribute@a61164 [Attribute: name id value "001"], org.dom4j.tree.DefaultAttribute@bfc8e0 [Attribute: name name value "sql"]]/>]
org.dom4j.tree.DefaultElement@18fd984 [Element: <file attributes: [org.dom4j.tree.DefaultAttribute@111a775 [Attribute: name id value "002"]]/>]
===================
001
id=001
id=001   name=sql   
==file标签的文本如下==





------------------
数据库原理
28.5
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值