xml简介

1、什么是xml?

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

2、xml的作用?

1.用来保存数据,而且这些数据具有自我描述性

2.它还可以作为项目或者模块的配置文件

3.还可以作为网络传输数据的格式(现在json为主)

3、xml语法

3.1.文档声明

<?xml version="1.0" encoding="utf-8" ?>
<!--
    <?xml version="1.0" encoding="utf-8" ?>
    以上内容就是xml文件的声明
    version=“1.0”  表示xml的版本
    encoding=“utf-8” 表示xml文件本身的编码

-->
<!---->
<books>
    <book sn="Sn123412123412"> <!--sn 属性表示图书的序列号-->
        <name>时间简史</name>   <!--name标签表示书名-->
        <author>霍金</author>     <!--author 表示作者-->
        <price>75</price>       <!--表示图书价格-->
    </book>
    <book sn="Sn123412123411"> <!--sn 属性表示图书的序列号-->
        <name>java从入门到放弃</name>   <!--name标签表示书名-->
        <author>沙老师</author>     <!--author 表示作者-->
        <price>75</price>       <!--表示图书价格-->
    </book>
</books>

3.2.xml注释

跟 html 一样 使用 <!--  -->

3.3.元素(标签)

1.什么是xml元素

2.xml命名规则

        xml元素必须遵循以下命名规则:

        2.1 名称可以含字母,数字以及其他的字符

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

        2.3 名称不能以字符“xml”(或者XML,Xml)开头。(是可以的)

        2.4 名称不能包含空格 

3.xml中的元素也分单标签和双标签

3.4.xml属性

xml的标签属性和html的标签属性是非常类似的,属性可以提供元素的额外信息

在标签上可以书写属性:

        一个标签上可以书写多个属性。每个属性的值必须使用引号 引起来

3.5语法规则

3.5.1 所有的xml元素都必须有关闭标签(也就是闭合);

3.5.2 xml标签对大小写敏感;

3.5.3 xml必须正确的嵌套

3.5.4 xml 文档必须有根元素 

        根元素就是顶级元素,

        没有父标签的元素,叫顶级元素,

       根元素是没有父标签的顶级元素,而且是唯一一个才行。

        

3.5.5 xml 的属性值必须加引号

3.5.6 xml中的特殊字符

 

3.5.7 文本区域(CDATA区)

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

        <![CDATA[

                <<<<<>>>>>>文本

                ]]>        

4、xml解析技术介绍

xml可扩展的标记语言

        不管是html文件还是xml文件他们都是标记性文档,都可以使用w3c组织制定的dom技术来解析。

 document对象表示的是整个文档(可以是html文档,也可以是xml文档)

dom解析技术是w3c组织制定的,而所有的编程严阿姨都对这个解析技术使用了自己语言的特点进行实现。java对dom技术解析标记也做了实现。

        第三方的解析:

        jdom 在dom基础上进行封装;

        dom4j 又对jdom进行封装;

        pull 主要用在Android手机开发,是在跟sax非常类似都是事件机制解析xml文件;

这个Dom4j 它是第三方的解析技术,我们需要使用第三方给我们提供好的类库才可以解析xml文件。

4.1 Dom4j类库的使用

        

4.2 dom4j目录的介绍

4.3 dom4j 编程步骤

 

4.4 获取document对象

        创建一个lib目录,并且添加dom4j的jar包。并添加到类路径。

         add as Library

4.5 遍历 标签 获取所有标签中

package com.atguigu.pojo;


import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.junit.Test;

import java.util.List;

public class Dom4jTest{
    @Test
    public void test1() throws Exception {
        //创建一个saxReader输入流,去读取xml配置文件,生成Document对象

        SAXReader saxReader = new SAXReader();
        try {
            Document document  = saxReader.read("src/books.xml");

            System.out.println(document);
        }catch (Exception e){
            e.printStackTrace();
        }

    }

    /**
     * 读取books.xml文件生成Book类
     * */
    @Test
    public void test2() throws Exception {
        //1. 读取books.xml文件
        SAXReader reader = new SAXReader();
        //在Junit测试中,相对路径是从模块开始算
        Document document = reader.read("src/books.xml");
        //2.通过Document对象获取根元素
        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){
            //asXML()把标签对象转换为标签字符
            //System.out.println(book.asXML());
            Element nameElement = book.element("name");
            System.out.println(nameElement.asXML());
            String nameTest = nameElement.getText();
            System.out.println(nameTest);

            String priceText = book.elementText("price");
            System.out.println(priceText);

            String authorText = book.elementText("author");
            String snValue = book.attributeValue("sn");

            System.out.println(new Book(snValue,nameTest,Double.parseDouble(priceText),authorText));
        }
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值