XML相关知识

一、XML简介

(一)什么是xml

xml 是可扩展的标记性语言。

(二)xml的作用

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

二、xml的语法

(一)xml文件的声明

<?xml version="1.0" encoding="UTF-8"?>   <!--xml文件的声明    version 表示版本信息,encoding 意思是编码-->

(二)元素

元素是指从开始标签到结束标签的部分 (开始标签以及结束标签都包括)

(三)xml属性

xml属性和html标签属性非常类似,属性可以提供元素额外的信息,每个属性的值必须用引号括起来

(四)语法规则

1. 命名规则

1. 名称可以包含字母、数字以及其它字符
2. 名称不能以数字或者标点符号开始
3. 名称不能包含空格

2. 标签需要闭合且xml标签对大小写敏感

3. xml必须正确地嵌套(和html一样)

4. xml文档必须有根元素

根元素就是没有父标签的顶级元素,而且必须唯一一个

在这里中根元素有两个,显然是不行的,所以这里报错了

5. 文本区域

CDATA 语法可以告诉 xml 解析器,我 CDATA 里的文本内容,只是纯文本,不需要 xml

CDATA 格式:
<![CDATA[ 这里可以把你输入的字符原样显示,不会解析 xml ]]

三、xml解析技术介绍

xml 可扩展的标记语言。 不管是 html 文件还是 xml 文件它们都是标记型文档,都可以使用 w3c 组织制定的 dom 技术  
 早期 JDK 为我们提供了两种 xml 解析技术 DOM 和 Sax 简介(已经过时,但我们需要知道这两种技术)
 dom 解析技术是 W3C 组织制定的,而所有的编程语言都对这个解析技术使用了自己语言的特点进行实现。 Java 对 dom 技术解析标记也做了实现。
 sun 公司在 JDK5 版本对 dom 解析技术进行升级:SAX( Simple API for XML ) SAX 解析,它跟 W3C 制定的解析不太一样。它是以类似事件机制通过回调告诉用户当前正在解析的内容。 它是一行一行的读取 xml 文件进行解析的。不会创建大量的 dom 对象。 所以它在解析 xml 的时候,在内存的使用上。和性能上。都优于 Dom 解析。 
第三方的解析: 
	jdom 在 dom 基础上进行了封装 、 
	dom4j 又对 jdom 进行了封装。 
	pull 主要用在 Android 手机开发,是在跟 sax 非常类似都是事件机制解析 xml 文件。
 这个 Dom4j 它是第三方的解析技术。我们需要使用第三方给我们提供好的类库才可以解析 xml  

四、dom4j解析技术

  1. 读取xml文件
  2. 获取根元素
  3. 通过根元素获取所有的次标签
  4. 遍历每个次标签对象
package servlet;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

import java.util.List;

public class testXml {
    public static  void main(String[] args) throws DocumentException {
        // 要创建一个 Document 对象,需要我们先创建一个 SAXReader 对
        SAXReader sr = new SAXReader();
        // 这个对象用于读取 xml 文件,然后返回一个 Document。
        Document document = sr.read("src/main/java/servlet/books.xml");
        //获取根元素
        Element root = document.getRootElement();
        //获取所有book标签对象
        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());
        }
    }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值