从零开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信登录

微信扫码,快速开始

搜索
查看: 4321|回复: 0

xml详解

[复制链接]
回帖奖励 1 金钱 回复本帖可获得 1 金钱奖励! 每人限 1 次
  • TA的每日心情
    开心
    2019-8-5 12:35
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    7

    主题

    12

    帖子

    886

    积分

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    886
    发表于 2019-2-24 13:40:30 | 显示全部楼层 |阅读模式
    本帖最后由 huangtiandi 于 2019-2-24 13:50 编辑

    说明:

    本文只讲解xml在java中使用,概念性的东西比较少,在java中的应用例子较多,适合有一定xml基础的人群


    xml简介

    XML 不会做任何事情。XML 被设计用来结构化、存储以及传输信息,也就是单个XML本身是没有功能的,是

    必须被其它东西使用才有意义

    XML 仅仅是纯文本,任何有能力处理纯文本的软件都可以处理 XML


    xml的基本书写

    1 需要注意的是大于号和小于号以及&(与符号)都不能直接使用

    小于号用(<)代替 大于号用(&gt)代替 &用 (&) 代替,他们后面都有分号

    2 属性值必须要用双引号包围
    注:下面的   呵呵< </孙元素>  呵呵后面的小于号应该用&lt;代替
    [mw_shl_code=xml,true]<?xml version="1.0" encoding="UTF-8"?>
    <!-- 上面必须放在第一行,encoding是编码格式,尽量使用UTF-8 -->
    <根元素 属性="属性值">     
            <子元素1>元素值</子元素1>
            <子元素2>
                    <孙元素>呵呵<</孙元素>
            </子元素2>
    </根元素>
    [/mw_shl_code]

    java读取xml数值


    java读取xml需要用到dom4j这个第三方包


    使用的API也是对应dom4j里的,要想深入了解,可以找到dom4j的官方文档


    dom4j的教程    https://www.cnblogs.com/sharpest/p/7877501.html


    一个简单的xml文件
    [mw_shl_code=xml,true]<?xml version="1.0" encoding="UTF-8"?>
    <stus>

            <!--         给标签加属性 -->
            <stu id="100">
                    <name>呵呵<</name>
                    <age>10</age>
            </stu>
            
            <stu id="200">
                    <name>哈哈</name>
                    <age>11</age>
            </stu>
            
    </stus>
    [/mw_shl_code]


    使用java读取xml的数值
    [mw_shl_code=java,true]        public static void main(String[] args) throws Exception
            {
                     //创建(Simple aip for xml)读取对象
                     SAXReader reader1=new SAXReader();
                     
                     //指定要解析的xml在哪,注意填对路径,返回的是一个Document对象
                     //这个Document是dom4j包里的,不要导错了包
                    Document document1=reader1.read(new File("src/XML_main/NewFile.xml"));
                   
                    //获取xml绝对路径
                    System.out.println("绝对路径=="+document1.getName());
                   
                    //获取根元素对象
                    Element rootElement=document1.getRootElement();
                   
                    //获取根元素的名称
                    System.out.println("根元素=="+rootElement.getName());
                   
                    //获取子元素对象,如果想获取孙元素对象,,在element后面再加一个element("")
                    //需要指定子元素对象的名称才能取到
                    System.out.println("子元素=="+rootElement.element("stu"));
                   
                   
                    System.out.println("==========================");
                   
                    //获取所有子元素,但不包含孙元素,也就是只获取第1层
                    List<Element> elements=rootElement.elements();
                    for(Element element:elements)
                    {
                            //但是可以根据子元素对象获取孙元素对象
                            System.out.println(element.element("name"));
                            //获取孙元素的元素值
                            System.out.println("元素值=="+element.element("name").getText());
                            //获取属性值
                            System.out.println("属性值=="+element.attribute("id").getValue());
                    }
                   
            }
    [/mw_shl_code]



    XPath的使用

    XPath能够快速定位到元素,而不需要向上面一样,假如我们只想读取孙元素的数据

    那么我们需要先获取父元素,再获取子元素,然后才能获取到孙元素,XPath便能快速定位

    需要添加dom4j的lib文件下的jaxen-1.1-beta-6.jar包



    XPath主要需要学习的就是表达式,这里只做简单的使用

    /stus/stu     /表示从根节点往下取
    //stu           //表示取出所有叫stu元素的,不考虑位置,但是要使用selectNodes才能取得所有元素

    XPath教程 http://www.runoob.com/xpath/xpath-tutorial.html

    [mw_shl_code=java,true]        public static void main(String[] args) throws  Exception
            {
                     //创建(Simple aip for xml)读取对象
                     SAXReader reader1=new SAXReader();
                     
                     //指定要解析的xml
                    Document document1=reader1.read(new File("src/XML_main/NewFile.xml"));
                   
                    //获取根元素
                    Element rootElement=document1.getRootElement();
                   
                    //Xpath,能快速定位到节点,但是还是需要添加jar包,在domj4的lib里jaxen-1.1-beta-6.jar
                    //找到元素后返回的是Node类型,我们可以强转成Element,节点就是元素
                    //selectSingleNode是只取第一个节点(元素)
                    //   /stus/stu     /表示从根节点往下取
                    //   //stu           //表示取出所有叫stu元素的,不考虑位置,但是要使用selectNodes才能取得所有元素
                    Element nameElement=(Element) rootElement.selectSingleNode("//name");
                    System.out.println(nameElement.getText());
                   
                    System.out.println("===============");
                    //获取所有节点(元素)
                    List<Element> list1=rootElement.selectNodes("//name");
                    for(Element element:list1)
                    {
                            System.out.println(element.getText());
                    }
            }
    [/mw_shl_code]


    未完待续


    摘自我的原文  https://blog.csdn.net/yzj17025693/article/details/87812877













    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|小黑屋|手机版|Archiver|一切从零开始 ( 蜀ICP备15031375号-3 )

    GMT+8, 2024-4-20 10:51 , Processed in 1.151365 second(s), 11 queries , File On.

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表