JavaWeb之XML

XML

JavaWeb之XML

什么是XML

  • XML是可扩展标记语言

主要作用

  • 存储数据
    • 文本流
    • 数据流
  • 配置文件
  • 数据交换

XML与HTML区别

  • 语法不通
    • HTML不区分大小写
    • XML严格区分大小写
  • 标记不同
    • HTML标记是固有的
    • XML标记是可扩展的
  • 作用不同
    • HTML主要作用:在浏览器显示页面的信息
    • XML:对数据进行操作

XML语法

  • XML文件头
    • 作用:对XML文件进行说明描述与设置
    • <?xml version="版本号" encoding="UTF-8"?>

XML结构

  • 根标记
    • 在整个XML文件只能有一个根标记
  • 子标记(节点标记)
    • 在根标记内可以写一个到多个子标记
  • ps:XML中注释与HTML一致
  • 使用方式
    • 标记必须成对出现
    • 区分大小写
    • 必须正常嵌套
<?xml version="1.0" encoding="utf-8" ?>
<XML>
    <A>
        <name>A</name>
        <price>10</price>
    </A>

    <B>
        <name>B</name>
        <price>20</price>
    </B>

    <C>
        <name>C</name>
        <price>30</price>
    </C>

</XML>

XML的有效性

  • 良好的结构
    • 只要符合XML语法规范要求即可
  • 验证
    • 验证要求:符合XML语法规则
    • 验证要求:只能是指定的标记

XML中的实体

    实体:是指特殊字符的转义
  • 常用实例
    • $开头   ;结尾
    • lt:          <
    • gt:          >
    • amp: &
    • apos: '
    • quot: "

XML中的CDATA节

    • CDATA节中的内容会被忽略掉
    • 不被当做XML标记进行解析
    • 原封不动的显示出来
    • 格式
<ul>
    <li>
        <![CDATA[
            节中的内容
        ]]>
    </li>
</ul>

DTD文件

    • 什么是DTD
      • 文档类定义:document type defination
      • 作用:为XML提供一些,有效的规则
      • 如果某一个XML文件使用了指定的DTD验证文件,name该XML文件必须遵照DTD中的规范进行书写
<!ELEMENT XML(A,B,C)>
<!ELEMENT A(name,price)>
    <!ELEMENT name(#PCDATA)>
    <!ELEMENT price(#PCDATA)>
<!ELEMENT B(name,price)>
    <!ELEMENT name(#PCDATA)>
    <!ELEMENT price(#PCDATA)>
<!ELEMENT C(name,price)>
<!ATTLIST C id CDATA #REQUIRED>

XML解析

    • 简单来说,就是对XML文件进行CURD
    • 常用方式
      • SAX
        • Simple API for xml
        • 基于事件的操作方式
        • 优点
          • 占用内存空间少
          • 通过事件逐一读取
      • DOM
        • document object model
        • 基于文档树的操作方式
          • 将整个文件读取到内存中
          • 通过DOM对象的方法可以快速边界的操作整个文件
      • 常用的第三方API
        • jdom
        • dom4j
    • 使用jdom操作xml
      • 操作步骤
        • 导包
        • 创建核心工具类SAXBuilder
        • 使用SAXBuilder工具类下build方法读取指定的xml文件
          • Document dom = builder.build("src/文件.xml")
        • 读取指定的xml后会返回整个xml文件的dom对象
          • Element root = dom.getRootElement()
      • 常用方法
        • Document
          • getRootElement() -- 获得根元素
        • Element
          • getName() -- 获取元素(标记)名称
          • Element   name_element = getChild(String name) -- 获得根元素下的第一个子元素
          • getValue() -- 获取值
          • getChildren() -- 获得当前元素下所有的子元素
for(Element element : book_first_children){
    System.out.println("标签名称"+element.getName()+"标签数据:"+element.getValue());
}
        • Attribute   attribute = getAttribute(String) -- 获取指定元素中指定的属性
        • getAttributeValue(String) -- 获取指定元素中的属性值
        • List<Attribute> list = getAttributes() -- 获取指定元素中所有的属性对象
        • getText() -- 获取元素文本内容
        • getChildText(String) -- 直接获取子元素的文本内容
        • getTextTeam() -- 获取去掉两端空格的文本
      • Attribute()
        • getName() -- 获取名字
        • getValue() -- 获取属性值
  • xPath
    • xPath是一种路径表达式
    • 通过一个表达式可以很方便的从xml文件中找到符合条件的节点
    • 表达式语法
      • /books/book
        • 绝对路径
        • 默认从根目录开始匹配
      • //name
        • 从所有位置开始匹配
      • *
        • 代表任意路径
      • []
        • 可以选择第几个元素
      • |
        • 满足两个条件中的一个即可
      • @
        • 使用@来操作属性
        • //book[@id] -- 具有id属性的所有book元素
        • //book[@id=123] -- id是123的所有book元素
    • 使用xPath路径表达式进行操作XML文件时,需要实例xPath工具对象
  • jdom生成xml操作
    • 将程序中的数据写入文件
        • 文本
      • properties
        • properties配置文件
      • xml
        • 可以实现复杂的数据层次关系
    • 需要通过Document文档对象来实现
      • 步骤
        • 导包
        • 在内存创建一个空的Document对象
        • 创建多个Element元素对象,设置所有Element的层次结构关系
        • 设置Document的根元素
        • 通过流将Document输出到xml文件中
如有问题,请发送邮件至buxiaqingcheng@163.com或者buxiaqingcheng@dingtalk.com
原文地址:https://www.cnblogs.com/zhenzhunaichabujiatang/p/13731124.html