彼方尚有荣光在|

_xiaolin

园龄:2年9个月粉丝:3关注:5

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文档作为一个树形结构,而树叶被定义为节点。 

图片转存失败,建议将图片保存下来直接上传

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

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

图片转存失败,建议将图片保存下来直接上传

这个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> 

本文作者:_xiaolin

本文链接:https://www.cnblogs.com/SilverStar/p/17415631.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   _xiaolin  阅读(0)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起