• Xml


    什么是Xml?

    xml 是可扩展的标记性语言

    xml 的作用?

    xml 的主要作用有:
        1、用来保存数据,而且这些数据具有自我描述性 
        2、它还可以做为项目或者模块的配置文件 
        3、还可以做为网络传输数据的格式(现在 JSON 为主)。

    Xml语法:

    1. 文档声明。
    2. 元素(标签) 
    3. xml 属性 
    4. xml 注释 
    5. 文本区域(CDATA 区)

    eg:

    我们先建立一个xml用来描述一个书本信息

    <?xml version="1.0" encoding="UTF-8"?> xml 声明。
    <!-- xml 声明 version 是版本的意思 encoding 是编码 --> 而且这个<?xml 要连在一起写,否则会有报错
    属性
      version 是版本号
      encoding 是 xml 的文件编码
      standalone="yes/no" 表示这个 xml 文件是否是独立的 xml 文件

    在浏览器中可以获取显示

    Xml语法;

    注释:html 和 XML 注释 一样 : <!-- html 注释 -->
    
    元素(标签):
        咱们先回忆一下: html 标签: 
        格式:<标签名>封装的数据</标签名> 
        单标签: <标签名 /> <br /> 
        换行 <hr />水平线
        双标签 <标签名>封装的数据</标签名> 
        标签名大小写不敏感 标签有属性,有基本属性和事件属性 标签要闭合(不闭合 ,html 中不报错。但我们要养成良好的书写习惯。闭合)
    
    
    什么是 xml 元素:
        元素是指从开始标签到结束标签的内容。 
        例如:<title>java 编程思想</title> 元素 
        我们可以简单的理解为是 标签。 Element 翻译 元素
    
    XML 命名规则:
        XML 元素必须遵循以下命名规则: 
            1)名称可以含字母、数字以及其他的字符 例如: 
        <book id="SN213412341"> <!-- 描述一本书 --> 
            <author>班导</author> <!-- 描述书的作者信息 -->     
             <name>java 编程思想</name> <!-- 书名 --> 
             <price>9.9</price> <!-- 价格 --> 
         </book>        

    Xml命名规则:

    1: 名称可以含字母、数字以及其他的字符

    2: 名称不能以数字或者标点符号开始

    3: 名称不能包含空格

    xml 中的元素(标签)也 分成 单标签和双标签:
    单标签格式: <标签名 属性=”值” 属性=”值” ...... /> 
    双标签格式:< 标签名 属性=”值” 属性=”值” ......>
    文本数据或子标签</标签名>

    xml 属性

    xml 的标签属性和 html 的标签属性是非常类似的,属性可以提供元素的额外信息 
        在标签上可以书写属性: 
        一个标签上可以书写多个属性。每个属性的值必须使用 引号 引起来。 的规则和标签的书写规则一致

    1: 属性必须使用引号引起来,不引会报错示例代码

    2:所有 XML 元素都须有关闭标签(也就是闭合)

    3:XML 标签对大小写敏感

    4: XML 必须正确地嵌套

    5: XML 文档必须有根元素
    6: XML 的属性值须加引号

    7: XML 中的特殊字符 

    8: 

    文本区域(CDATA 区)
    CDATA 语法可以告诉 xml 解析器,我 CDATA 里的文本内容,只是纯文本,不需要 xml 语法解析 
    CDATA 格式: <![CDATA[ 这里可以把你输入的字符原样显示,不会解析 xml ]]>

     

    dom4j 解析技术

    由于 dom4j 它不是 sun 公司的技术,而属于第三方公司的技术,我们需要使用 dom4j 就需要到 dom4j 官网下载 dom4j 的 jar 包。
    3.1、Dom4j 类库的使用
    解压后:3.2、dom4j 目录的介绍:
    1)docs 是 文 档 目 录
    2)如何查 Dom4j 的文档

    Dom4j 快速入门

    2)lib 目录3)src 目录是第三方类库的源码目录:

     

    dom4j 编程

    第一步: 先加载 xml 文件创建 Document 对象 
    第二步:通过 Document 对象拿到根元素对象 
    第三步:通过根元素.elelemts(标签名); 可以返回一个集合,这个集合里放着。所有你指定的标签名的元素对象 
    第四步:找到你想要修改、删除的子元素,进行相应在的操作 
    第五步,保存到硬盘上
    获取 document 对象
    创建一个 lib 目录,并添加 dom4j 的 jar 包。并添加到类路径。
     
    需要解析的 books.xml 文件内容
    <?xml version="1.0" encoding="UTF-8"?> 
    <books> 
        <book sn="SN12341232"> 
        <name>辟邪剑谱</name> 
        <price>9.9</price>
        <author>班主任</author> 
        </book> 
    
        <book sn="SN12341231"> 
        <name>葵花宝典</name> 
        <price>99.99</price> 
        <author>班长</author> 
        </book> 
    </books>
    解析获取 Document 对象的代码
    第一步,先创建 SaxReader 对象。这个对象,用于读取 xml 文件,并创建 Document
    /** dom4j 获取 Documet 对象 */ 
    @Test public void getDocument() throws DocumentException { // 要创建一个 Document 对象,需要我们先创建一个 SAXReader 对象         
        SAXReader reader = new SAXReader(); // 这个对象用于读取 xml 文件,然后返回一个 Document。 
        Document document = reader.read("src/books.xml"); // 打印到控制台,看看是否创建成功 System.out.println(document); 
    }

    遍历 标签 获取所有标签中的内容

    需要分四步操作: 
        第一步,通过创建 SAXReader 对象。来读取 xml 文件,获取 Document 对象 
        第二步,通过 Document 对象。拿到 XML 的根元素对象 
        第三步,通过根元素对象。获取所有的 book 标签对象 
        第四小,遍历每个 book 标签对象。然后获取到 book 标签对象内的每一个元素,再通过 getText() 方法拿到起始标签和结 束标签之间的文本内容      
    /** 读取 xml 文件中的内容 */ 
        @Test public void readXML() throws DocumentException {
                 // 需要分四步操作: 
                        // 第一步,通过创建 SAXReader 对象。来读取 xml 文件,获取 Document 对象 
                       // 第二步,通过 Document 对象。拿到 XML 的根元素对象 
                       // 第三步,通过根元素对象。获取所有的 book 标签对象 
                       // 第四小,遍历每个 book 标签对象。然后获取到 book 标签对象内的每一个元素,再通过 getText() 方法拿到起始标签和结束标签之间的文本内容
    
                     // 第一步,通过创建 SAXReader 对象。来读取 xml 文件,获取 Document 对象 
                    SAXReader reader = new SAXReader(); Document document = reader.read("src/books.xml");
                    // 第二步,通过 Document 对象。拿到 XML 的根元素对象 Element root = document.getRootElement(); 
                       // 打印测试 
                      // Element.asXML() 它将当前元素转换成为 String 对象
                    // System.out.println( root.asXML() ); 
                   // 第三步,通过根元素对象。获取所有的 book 标签对象 
                   // Element.elements(标签名)它可以拿到当前元素下的指定的子元素的集合 
                   List<Element> books = root.elements("book"); 
                   // 第四小,遍历每个 book 标签对象。然后获取到 book 标签对象内的每一个元素, 
                   for (Element book : books) { 
                   // 测试 
                   // System.out.println(book.asXML());                
                   // 拿到 book 下面的 name 元素对象 
                   Element nameElement = book.element("name"); 
                   // 拿到 book 下面的 price 元素对象 
                   Element priceElement = book.element("price"); 
                   // 拿到 book 下面的 author 元素对象
                    Element authorElement = book.element("author"); 
                   // 再通过 getText() 方法拿到起始标签和结束标签之间的文本内容 
                   System.out.println("书名" + nameElement.getText() + " , 价格:" + priceElement.getText() + ", 作者:" + authorElement.getText()); 
                   }
     }    
    打印内容:
     

    .

  • 相关阅读:
    codeforces 765 F Souvenirs 线段树+set
    codeforces 768 E 变形NIM博弈/手写sg函数
    BZOJ 1001 狼抓兔子(网络流)
    BZOJ 2957 楼房重建 (分块)
    CodeForces
    CodeForces
    HYSBZ
    SPOJ
    Codeforces-963 D Frequency of String
    中石油2019寒假集训第一场(新生场)(补题)
  • 原文地址:https://www.cnblogs.com/zhaoyunlong/p/13528333.html
Copyright © 2020-2023  润新知