JavaWeb学习之XML学习

XML学习

XML简介

  • 什么是xml:xml是可扩展的标记性语言(指标签都不是HTML中定义好的,可以使用自定义的标签)
  • XML的作用有:
    1. 用来保存数据,而且这些数据具有自我描述性
    2. 还可以作为项目或者模块的配置文件
    3. 还可以所谓网络传输数据的格式(现在以JSON为主)

XML语法

  1. 文档声明
  2. 元素(标签)
  3. xml属性
  4. xml注释
  5. 文本区域(CDATA区)
  • 文档声明
    <?xml version = "1.0" encoding = "utf-8 ?>"是xml文件的声明
    属性version是版本号 , encoding是xml文件的字符集 , standalone = “yes/no”表示xml文件是否独立
<?xml version="1.0" encoding="utf-8" ?>
<!--
    <?xml version="1.0" encoding="utf-8" ?>
    以上内容是xml文件的声明
    version = "1.0" 表示xml文件的版本
    encoding = "utf-8" 表示xml文件所使用的字符集
    standalone="yes/no" 表示这个 xml 文件是否是独立的 xml 文件
-->
<!-- 如希望在xml文件中保存图书 -->
<books>  <!-- books表示多个图书信息,book表示单个图书信息 -->
    <!-- 图书的出版号或者序列号使用sn来表示 -->
    <book sn="book123456">
        <name>时间简史</name>
        <author>霍金</author>
        <price>75</price>
    </book>
    <book sn="book123456">
        <name>果壳里的宇宙</name>
        <author>霍金</author>
        <price>88</price>
    </book>
</books>
  • xml注释
    xml文件的注释与html文件的注释相同:<!-- 注释内容 -->

  • html标签复习

格式:<标签名>封装的数据</标签名>
单标签:<标签名/>  <br/> 换行      <hr/>水平线
双标签:<标签名>封装的数据</标签名>  
标签名对大小写不敏感
标签要有属性,要有基本属性和事件属性
标签要闭合
  • xml元素

    1. 什么是xml元素:指从开始标签到结束标签的内容,即可以理解为标签
    2. xml元素的命名规则:
      - 名称可以包含字母、数字以及其他的字符
      - 名称不能以数字或者是标点符号开始
      - 名称不能包含空格
      3.xml元素也可以分为单标签和双标签
  • xml属性
    xml的标签属性和html的标签属性是非常那个类似的,属性可以提供元素的额外信息。

  • 语法规则

    1. 所有的xml远古三都必须有关闭标签,也就是说xml标签需要闭合
    2. xml标签对大小写敏感
    3. xml标签必须正确的嵌套
    4. xml文档必须有根元素
      根元素就是顶级元素,没有父标签的元素叫做顶级元素,而且是xml文档中的唯一一个
    5. xml的属性值必须加引号,单引号或者双引号皆可
    6. xml中的特殊字符&gt;&lt;
    7. 文本区域
      CDATA语法可以告诉xml解析器,CDATA中的文本内容是纯文本,不需要xml语法解析
      CDATA格式:
      <![CDATA[这里输入的字符将会被原样显示,不会被解析器解析]]
<book sn="book632566">
        <!-- CDATA中的内容不会被解析器解析 -->
        <name><![CDATA[
        这本书的名字叫《阿萨德客户高考0》<><<><><><><>
        ]]>]</name>
    </book>

xml解析技术介绍

xml是可扩展的标记性语言。无论是html文件还是xml文件,都是标记型文档,都可以使用w3c组织指定的dom技术来进行解析。
早期 JDK 为我们提供了两种 xml 解析技术 DOM 和 Sax 简介(已经过时,但我们需要知道这两种技术)
第三方的解析:

  1. jdom 在 dom 基础上进行了封装。
  2. dom4j 又对 jdom 进行了封装。 Dom4j 需要使用第三方提供好的类库才可以解析 xml 文件。
  3. pull 主要用在 Android 手机开发,是在跟 sax 非常类似都是事件机制解析 xml 文件

dom4j解析技术

由于dom4j是第三方提供的解析技术,因此需要外部导入dom4j包

  • dom4j编程步骤

    1. 首先加载目标xml文件,获得Document对象
    2. 使用获得的Document对象获取xml文件的根元素对象
    3. 通过根元素对象.elements(标签名)方法返回该标签对象的集合
    4. 使用标签对象.element( 标签名)获得想要操作的子元素对象,对其进行相应的操作
    5. 保存至硬盘
  • 使用dom4j包解析xml文件,获得xml文件的根元素对象

package com.javis;

import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.junit.Test;
import java.util.List;
/**
 * 使用dom4j来对xml文件进行解析,将其解析为java类
 * */
public class Dom4jTest {
    /**
     * 使用SAXReader输入流的read方法来对xml文件进行读取
     * 获得document对象
     * 该对象对应着xml文件解析器解析出来的dom对象
     * */
    @Test
    public void test1() throws Exception{
        //创建一个SaxReader输入流读取xml文件,以生成document对象
        SAXReader saxReader =  new SAXReader();
        //使用SAXReader的read方法来读取xml文件生成document对象
        Document document = saxReader.read("XML/xml/books.xml");
    }
}
  • 使用根元素对象获得指定的元素对象集合,进而对其内部的标签进行各种操作
package com.javis;

import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.junit.Test;
import java.util.List;
/**
 * 使用dom4j来对xml文件进行解析,将其解析为java类
 * */
public class Dom4jTest {
    /**
     * 通过读取books.xml文件生成Book类
     * */
    @Test
    public void test2() throws Exception{
        //1. 读取book.xml文件
        SAXReader saxReader = new SAXReader();
        Document document = saxReader.read("XML/xml/books.xml");

        //2. 通过document对象获得xml文件的根元素
        Element rootElement = document.getRootElement();
        System.out.println(rootElement);
        //3. 通过根元素获得book标签对象
        //使用Element.elements("标签名")方法来获得标签对象
        List<Element> books = rootElement.elements("book");

        //4. 遍历,处理每个book标签将其转换为Book类
        for (Element book:books) {
            //测试
            //System.out.println(book.asXML());
            //获取book元素标签的name子标签
            Element name = book.element("name");
            //获取book元素标签的price子标签
            Element price = book.element("price");
            //获取book元素标签的author子标签
            Element author = book.element("author");
            //再通过getText方法获取标签之间的内容
            System.out.println("书名" + name.getText() +
                    " , 价格:" +price.getText() +
                    ", 作者:" + author.getText());

        }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值