首页 > 其他分享 >XML

XML

时间:2023-05-19 15:12:13浏览次数:27  
标签:XML xml dom4j 标签 元素 book

XML

1、XML简介

  1. 什么是xml?

    xml是可扩展的标记性语言

  2. xml的作用?

    xml的主要作用有:

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

2、xml语法

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

2.1、文档声明

xml version="1.0" encoding="utf-8" ?>
<!--
    <?xml version="1.0" encoding="utf-8" ?>
    以上内容是XML文件的声明
    version="1.0" version 是XML文件的版本
    encoding="utf-8" encoding 是XML文件本身的编码
-->
<books><!--books表示多个图书信息-->
    <book sn="SN001"><!--book表示一个图书信息,sn属性表示图书馆序列号-->
        <name>C语言程序设计</name><!--name表示图书名称-->
        <author>William</author><!--author表示图书作者-->
        <price>100</price><!--price表示图书价格-->
    </book>
    <book sn="SN002">
        <name>java程序设计</name>
        <author>林老师</author>
        <price>100</price>
    </book>

</books>

2.2、xml注释

一样的:

2.3、元素(标签)

先回忆一下:

html标签:
	格式:<标签名>封装的数据</标签名>
	单标签:<标签名/> <br/>换行 <hr/>水平线
	双标签:<标签名>封装的数据</标签名>
	标签名大小写不敏感
	标签有属性,有基本属性和事件属性
	标签要闭合(不闭合,html中不报错,但我们要养成良好的书写习惯,注意闭合)

2.3.1、什么是xml元素?

什么是 XML 元素?

XML元素指的是从(且包括)开始标签直到(且包括)结束标签的部分。

元素可包含其他元素、文本或者两者的混合物。元素也可以拥有属性。

<bookstore>
<book category="CHILDREN">
  <title>Harry Potter</title> 
  <author>J K. Rowling</author> 
  <year>2005</year> 
  <price>29.99</price> 
</book>
<book category="WEB">
  <title>Learning XML</title> 
  <author>Erik T. Ray</author> 
  <year>2003</year> 
  <price>39.95</price> 
</book>
</bookstore>

2.3.2、xml的命名规则

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

  • 名称可以含字母、数字以及其他字符
  • 名称不能以数字或者表单符号开始
  • 名称不能以字符”xml“(或者XML,Xml)开始
  • 名称不能包含空格

2.3.3、xml中的元素(标签)也分成单标签和双标签

单标签

​ 格式:<标签名 属性=”值“ 属性=”值“……/>

双标签:

​ 格式:<标签名 属性=”值“ 属性=”值“……>文本数据或者子标签</标签名>

<book sn="SN002">
    <name>java程序设计</name>
    <author>林老师</author>
    <price>100</price>
</book>
<book sn="SN003" name="Web" author="林老师" price="100"/>

2.4 、xml属性

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

在标签是可以书写属性:

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

注意:如果属性值本身包含双引号,那么有必要使用单引号包围它

2.5、xml其他语法规则

  1. 所有XML元素都必须有关闭标签(也就是闭合)

    不闭合就会报错

  2. XML标签对大小写敏感

  3. XML必须正确的嵌套

  4. XML文档必须有根元素

    根元素就是顶级元素

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

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

  5. xml属性值必须加引号

  6. xml中的特殊字符

    &lt; < 小于
    &gt; > 大于
    &amp; & 和号
    &apos; ' 省略号
    &quot; " 引号
  7. 文本区域(CDATA区)

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

    CDATA格式:

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

3、xml解析技术介绍

xml是可扩展的标记语言。

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

XML文档对象模型定义访问和操作XML文档的标准方法
DOM将XML文档作为一个树形结构,而树叶被定义为节点。

image-20220522182440996

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

早期jdk为我们提供了两种xml解析技术Dom和Sax简介(已经过时,但是我们需要知道这两种技术)

image-20220522183004579

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

4、dom4j解析技术(重点)

由于dom4j它不是sun公司的技术,而属于第三方公司,我们需要使用dom4j就需要到dom4j官网下载dom4j的jar包

4.1、Dom4j类库的使用

4.2、Dom4j常用目录介绍

4.3、dom4j编程步骤:

第一步:先加载xml文件创建Document对象
第二步:提供Document对象拿到根元素对象
第三步:提供根元素.elements(标签名);可以返回一个集合,这个集合里放着所有你指定的标签名的元素对象
第四步:找到你想修改、删除的子元素,进行相应的操作
第五步:保存到硬盘上

4.4、获取document对象

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

package com.lxg.pojo;

import jdk.jfr.StackTrace;
import org.dom4j.Document;
import org.dom4j.DocumentException;
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 DocumentException {
        //创建一个SaxReader输入流,去读取xml配置文件,生成Document对象
        SAXReader saxReader = new SAXReader();
        Document document = saxReader.read("src/books.xml");
        System.out.println(document);
    }

    /**
     * 读取books.xml文件生成book类
     */
    @Test
    public void test2() throws DocumentException {
        //1、读取books.xml文件
        SAXReader saxReader = new SAXReader();
        //在Junit测试中,相对路径是从模块名称开始算
        Document document=saxReader.read("src/books.xml");
        //2、通过Document对象获取根元素
        Element rootElement = document.getRootElement();
        //System.out.println(document);
        //3、通过根元素获取book标签对象
        //element()和elements()都是通过标签名称来获取子元素对象
        List<Element> books = rootElement.elements("book");
        //4、通过遍历,处理每个book标签转换为Book类
        for (Element book : books) {
            //asXML()方法,返回标签对象的xml格式字符串
            //System.out.println(book.asXML());
            Element nameElement = book.element("name");
            //getText()方法,返回标签对象的文本内容
            String nameText = nameElement.getText();
            //System.out.println(nameText);
            //直接获取指定标签的文本内容
            String priceText = book.elementText("price");
            String authorText = book.elementText("author");
            String snVlaue = book.attributeValue("sn");
            System.out.println(new Book(snVlaue, nameText,authorText,priceText));

        }
    }
}
<?xml version="1.0" encoding="UTF-8"?>
<books>
    <book sn="SN001">
        <name>The Hitchhiker's Guide to the Galaxy</name>
        <author>Douglas Adams</author>
        <price>5.99</price>
    </book>
    <book sn="SN002">
        <name>The Restaurant at the End of the Universe</name>
        <author>Douglas Adams</author>
        <price>5.99</price>
    </book>
</books>

标签:XML,xml,dom4j,标签,元素,book
From: https://www.cnblogs.com/SilverStar/p/17415191.html

相关文章

  • Springboot支持XML格式报文的传输
    导入依赖-jackson-dataformat-xml<!--整合web模块--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><exclusions>......
  • Weblogic < 10.3.6 'wls-wsat' XMLDecoder 反序列化漏洞(CVE-2017-10271)
    参考:https://github.com/vulhub/vulhub/blob/master/weblogic/CVE-2017-10271/README.md反弹shellEXP:POST/wls-wsat/CoordinatorPortTypeHTTP/1.1Host:172.31.14.123:7001Accept-Encoding:gzip,deflateAccept:*/*Accept-Language:enUser-Agent:Mozilla/5.0(com......
  • Maven - settings.xml配置
      settings.xml<?xmlversion="1.0"encoding="UTF-8"?><!--LicensedtotheApacheSoftwareFoundation(ASF)underoneormorecontributorlicenseagreements.SeetheNOTICEfiledistributedwiththisworkforadditional......
  • 使用xml更新solr索引
    使用xml更新solr索引Solr接受xml格式数据更新、提交、修改索引。 更新的Schema不要混淆SCHEMA.XMLadd/replacedocuments SimpleExample:<!--[if!supportLists]-->·<!--[endif]--><add><!--[if!supportLists]-->·<!--[endif]--><doc><!--[......
  • xml解析技术
    dom解析技术:xml作用:存储数据,做配置信息,最后进行数据传输。xml最终被程序读取,解析里面的信息。 ......
  • 报错问题:谷粒商城Access to XMLHttpRequest at 'http://localhost:88/api/sys/login'
    大概在P46P47,跟着配置后出现问题AccesstoXMLHttpRequestat'http://localhost:88/api/sys/login'fromorigin'http://localhost:8001'hasbeenblockedbyCORSpolicy: 上网查了一下,说是跨域的问题,检查了一会,有人说是nacos的命名空间的问题,也有人说是版本上的问题,大多......
  • WebApplicationInitializer究 Spring 3.1之无web.xml式 基于代码配置的servlet3.0应用
    大家应该都已经知道Spring3.1对无web.xml式基于代码配置的servlet3.0应用。通过spring的api或是网络上高手们的博文,也一定很快就学会并且加到自己的应用中去了。PS:如果还没,也可以小小参考一下鄙人的上一篇文章<<探Spring3.1之无web.xml式基于代码配置的servlet3.0应用>>。    ......
  • pom.xml详解
    <projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/maven-v4_0_0.xsd">&......
  • 对于xml文件里面配置mybatis-spring报错的解决
    问题描述在我在bean的class里面进行查找sqlSessionFactoryBean,发现无论如何也找不到前面的mybatis问题解决在导入这个时:我们还需要导入这个依赖,只是导入mybatis自己爹依赖是不行的,需要导入的是mybatis-spring依赖:<dependency><groupId>org.mybatis</groupId>......
  • Bilibili-XMLSubtitle-to-ASS可视化Bilibili本地视频XML弹幕转换ASS字幕转换器:新增自
    可视化Bilibili本地视频XML弹幕转换ASS字幕转换器一个可视化,打开即用的将B站弹幕转换为本地播放器可识别的ASS格式字幕的工具。另外这个工具还有一个妙用,如果你想看一部曾经在B站上存在过但现在下架了的电视剧/电影的弹幕,用这个工具也能多多少少帮你做到这一点,具体方式请往下看......