zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    如何用Python爬虫实现百度图片自动下载?
    通俗易懂的分析如何用Python实现一只小爬虫,爬取拉勾网的职位信息
    04 整合IDEA+Maven+SSM框架的高并发的商品秒杀项目之高并发优化
    03 整合IDEA+Maven+SSM框架的高并发的商品秒杀项目之web层
    selenium缺少chromedriver解决方法
    python三大神器之fabric(2.0新特性)
    Facebook ATC弱网环境搭建
    Ubuntu 安装网卡驱动
    python三大神器之virtualenv
    python三大神器之pip
  • 原文地址:https://www.cnblogs.com/zhenzhunaichabujiatang/p/13731124.html
Copyright © 2011-2022 走看看