zoukankan      html  css  js  c++  java
  • XML

    XML

    概念

    • XML:可扩展性标记语言(Extensible Markup Language)
    • XML与HTML的区别:
      1.XML语法要求严格,HTML语法松散
      2.XML中的标签都是自定义的,HTML标签是预定义的
      3.XML是存储数据的,HTML是展示数据的
    • XML功能:存储数据
      1.配置文件中
      2.在网络中传输

    语法

    • 基本语法:

      1. XML文件的扩展名是.xml
      2. XML的第一行必须写文档声明
      3. XML文档有且仅有一个根标签
      4. XML中的属性必须使用引号(单双引号都可以)引起来
      5. XML对大小写敏感(区分大小写)
    • 快速入门:

      1. 文档声明:
        • 格式:<? xml 属性列表>
        • 属性列表:
          1.version:版本号,必须写的属性
          2.encoding:解码方式(告知浏览器)
          3.standalone:是否独立:
          • yes:是独立的,不依赖于其他文件
          • no:不是独立的,依赖其他文件
      2. 指令(作为了解):结合CSS展示数据
        • <?xml -stylesheet type="text/css" href="a.css"?>
      3. 标签(自定义)
        • 规则:
          1. 名称可以包含字母,数字以及其他字符
          2. 名称不能以数字或者标点符号开头
          3. 名称不能以字母xml(或者XML,Xml等等)开头
          4. 名称之间不能包含空格
      4. 属性:id值唯一(约束)
      5. 文本:
        • CDATA区:在该区域中的文本都会保留原来的样式
          • 格式:<![CDATA [数据]]>
    • 约束:规定XML文档的书写规则

      1. 要求:

        • 可以在XML文档中引入约束文档
        • 可以简单读懂约束文档
      2. 分类:

        • DTD:一种简单的约束技术
        • Schema:一种复杂的约束技术
      3. DTD:

        • 引入dtd文档到xml中
          • 内部dtd:将约束规则定义在XML文档中(不是很常用)
          • 外部dtd:将约束的规则定义在外部的dtd文件中
            • 本地:
            • 网络:
        • 缺点:对于数据审核不严格,只规定了数据的类型,并未检验数据的合法性!
      4. Schema:

        • 引入:
          1. 填写xml文档的根元素
          2. 引入xsi前缀 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          3. 引入xsd文件命名空间 xsi:schemaLocation="http://www.itcast.cn/xml student.xsd"
          4. 为每一个xsd约束声明一个前缀,作为标识,xmlns="http://www/itcast.cn/xml"

    解析:操作xml文档,将文档中的数据读取到内存中

    • 操作xml文档

      1. 解析(读取):将文档中的数据读取到内存中
      2. 写入:将内存中的数据保存到xml文档中。持久化的存储
    • 解析xml文档方式:

      • DOM:将标记语言文档一次性加载进内存形成一棵dom树
        • 优点:操作方便,可以对文档进行CRUD的所有操作
        • 缺点:占用内存
      • SAX:逐行读取 ,基于事件驱动
        • 优点:不占内存
        • 缺点:只能读取,不能增删改
    • xml常见的解析器:

      1. JAXP:sun公司提供的解析器,支持dom和sax两种思想
      2. DOM4J:一款非常优秀的解析器
      3. Jsoup:jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。
      4. PULL:Android操作系统内置的解析器,sax方式的
    • Jsoup:jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。

      • 快速入门:
        • 步骤:
          1. 导入jar包
          2. 获取Docunment对象
          3. 获取相应的标签Element对象
          4. 获取数据
      //第二步,从xml文档中获取document对象
          //获取student.xml路径
          String path = JsoupDemo1.class.getClassLoader().getResource("student.xml").getPath();
          //解析xml文档,加载文档进内存,获取dom树--->Document对象
          Document document = Jsoup.parse(new File(path), "utf-8");
          //获取元素对象Element
          Elements elemens = document.getElementsByTag("name");
          //获取第一个name的Element对象
          Element element = elemens.get(0);
          //获取数据
          String name = element.text();
          System.out.println(name);
      
      • 对象的使用

        • Jsoup:工具类,可以解析xml和html文档,返回Document

          • parse:解析html或者xml文档,返回Document
            1. parse(File in, String charsetName):解析xml或者html文件
            2. parse(String html):解析xml或者html字符串
            3. parse(URL url, int timeoutMillis):通过网络路径获取指定的html或者xml的文档对象
        • Document:文档对象,代表内存中的dom树

          • 获取Element对象
            • getElementById(String id):根据id属性值获取唯一的element对象
            • getElementByTag(String tagName):根据标签名称获取元素对象集合
            • getElementByAttribute(String key):根据属性名称获取元素对象集合
            • getElementByAttributeValue(String key, String value):根据对应的属性名和属性值来获取元素对象集合
        • Elements:元素Element对象的集合。可以当作ArrayList来使用

        • Element:元素对象

          1. 获取子元素对象

            • getElementById(String id):根据id属性值获取唯一的element对象
            • getElementByTag(String tagName):根据标签名称获取元素对象集合
            • getElementByAttribute(String key):根据属性名称获取元素对象集合
            • getElementByAttributeValue(String key, String value):根据对应的属性名和属性值来获取元素对象集合
          2. 获取属性值

            • String attr(String key):根据属性名称获取属性值
          3. 获取文本内容

            • String text():获取文本内容
            • String html():获取标签体的所有内容(包括子标签的字符串内容)2020/8/14 21:35:52 2020/8/14 21:35:53
        • Node:节点对象

          • 是Document和Element的父类
      • 快捷查询方式

        1. selector:选择器
          • 使用的方法:Element select(String cssQuery)
            • 语法:参考Selector类中定义的语法
        2. Xpath:XPath即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言。
          • 使用Jsoup的Xpath需要额外导入jar包
          • 需要参考相关手册
  • 相关阅读:
    POJ 3114 Tarjan+Dijkstra
    278. First Bad Version
    209. Minimum Size Subarray Sum
    154. Find Minimum in Rotated Sorted Array II
    153. Find Minimum in Rotated Sorted Array
    710. Random Pick with Blacklist
    767. Reorganize String
    524. Longest Word in Dictionary through Deleting
    349. Intersection of Two Arrays
    350. Intersection of Two Arrays II
  • 原文地址:https://www.cnblogs.com/Arong123/p/13504585.html
Copyright © 2011-2022 走看看