栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

XML可扩展的标记性语言

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

XML可扩展的标记性语言

文章目录
  • XML
    • 1.简介
    • 2.语法
    • 3.XML的各种解析技术
    • 4.Dom4j解析技术

XML 1.简介

是可扩展的标记性语言 (可扩展:直接定义标签)

xml主要作用:

  1. 用来保存数据 ,而且这些数据具有自我描述性

  2. 还可以作为项目或模板的的配置文件

  3. 作为网络传输数据的格式 (这个用的不多了,现在以JSON为主)


2.语法
  1. 文档声明

  2. 元素(标签)

    指的是从(且包括)开始标签直到(且包括)结束标签的部分,和html差不多。标签命名可有下划线。

  3. xml属性,提供有关元素的额外信息,属性值必须被引号包围

  4. xml注释,和html一样

  5. 文本区域 (CDATA区)

    CDATA语法可以告诉解析器CDATA里面的内容只是存文本,不需要xml语法解析。

    >我是纯文本 ]]>
    

xml对大小写敏感,标签必须闭合,xml文档必须有根元素(根元素:没有父标签的顶级元素,而且是一个才行)






    
        时间简史
        霍金
        75
    

    
        活着
        余华
        50
    


3.XML的各种解析技术

⭐⭐⭐

各种解析技术的介绍:不管是html还是xml文件它们都是标记性文档,都可以使用w3c组织指定的dom技术来解析,document对象表示整个文档,不仅是html,xml也是。

早期JDK为我们提供了两种解析技术:DOM和SAX (现在都已经过时了)

DOM:根据W3C指定的规则,几乎所有的编程语言都对这个解析技术做了实现。

SAX:在JDK5对dom技术进行了升级即SAX(Simple API for XML),SAX解析,它跟W3C制定的规则不太一样,它是类似事件机制通过回调告诉用户当前正在解析的内容,它是一行一行的读取xml文件进行解析的,不会创建大量的dom对象,所以在内存上性能上都优于DOM解析技术。


第三方的解析:

  1. jdom : 在dom/sax基础上进行了封装

  2. dom4j :又对jdom进行了封装 (下面讲)⭐

  3. pull : 主要用于安卓手机开发,是在跟sax非常类似都是事件机制解析xml文件


4.Dom4j解析技术

Dom4j解析技术不是sun/oracle公司,属于第三方的技术,所以要去dom4j官网下载jar包

官网:dom4j.github.io

在Java中解析上面的例子:

  1. 创建SAX输入流,读取xml文件,产生document对象
  2. 创建document对象
  3. 通过document对象获取跟元素
  4. 通过根元素获取book标签对象,遍历处理每个book标签转化为Book类
private static void test01() {
    // 1.创建SAX输入流,读取xml文件,产生document对象
    SAXReader saxReader = new SAXReader();
    try {
        // 2.创建document对象
        Document document = saxReader.read("xml/books.xml"); 
        //Junit测试中,相对路径的从当前模板为开始算

        // 3.通过document对象获取跟元素
        Element rootElement = document.getRootElement();

        // 4.通过根元素获取book标签对象,遍历处理每个book标签转化为Book类
        List books = rootElement.elements("book");  
        // element和elements都是通过标签名查找子元素
        for (Element book : books) {
            //System.out.println(book.asXML()); // asXML()把标签对象转化为标签字符串
            Element name = book.element("name");
            String nameText = name.getText(); //获取标签中的文本内容

            String priceText = book.elementText("price"); //直接获取标签中的文本内容
            String authorText = book.elementText("author");

            //获取属性
            String snVal = book.attributeValue("sn");

            System.out.println(new Book(snVal, nameText, 
            	authorText, new BigDecimal(priceText))); //输出Book类对象
        }

    } catch (DocumentException e) {
        e.printStackTrace();
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/830096.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号