01.XML

XML

1.XML大纲

  1. XML入门
  2. XML解析
  3. XPath

2.XML入门

XML概述

XML是可扩展标记语言(Extensible Markup Language)的缩写,它是一种数据表示格式,可以描述非常复杂的数据结构,常用于传输和存储数据,

XML的特点

  1. 纯文本,默认使用UTF-8编码
  2. 可嵌套
  3. XML内容存为文件,那么它就是一个XML文件

XML的使用场景

  1. XML内容经常被当成消息进行网络传输
  2. 作为配置文件用于存储系统或框架的信息

XML 和 HTML 之间的差异

  1. XML 不是 HTML 的替代
  2. XML 和 HTML 为不同的目的而设计:
  • XML 被设计用来传输和存储数据,其焦点是数据的内容
  • HTML 被设计用来显示数据,其焦点是数据的外观

XML文件的创建

就是创建一个文件名后缀是xml的文件

XML语法规则

文档声明必须是第一行

<?xml version="1.0" encoding="UTF-8" ?>

树形结构

XML 文档形成了一种树结构,它从"根部"开始,然后扩展到"枝叶"

XML文档必须有根元素

XML 文档必须包含根元素。该元素是所有其他元素的父元素

<root>
  <child>
    <subchild>.....</subchild>
  </child>
</root>

所有的XML元素都必须有一个关闭标签

<p>This is a paragraph.</p>
<br />

XML标签对大小写敏感

必须使用相同的大小写来编写打开标签和关闭标签

<Message>这是错误的</message>
<message>这是正确的</message>

XML必须正确嵌套

<b><i>This text is bold and italic</i></b>

XML属性值必须加引号

在 XML 中,XML 的属性值必须加引号

<note date="12/11/2007">
<to>Tove</to>
<from>Jani</from>
</note>

实体引用

在 XML 中,一些字符拥有特殊的意义。

如果您把字符 "<" 放在 XML 元素中,会发生错误,这是因为解析器会把它当作新元素的开始。

这样会产生 XML 错误,正确的方式如下:

使用&lt;来代替<符号

<message>if salary &lt; 1000 then</message>

XML5个预定义的实体引用

符号 预定义
> &gt;
< &lt;
& &amp;
' &apos;
" &quot;

XML中的注释

<!-- 注释内容 -->

在XML中空格会被保留

XML以LF存储换行

XML元素

什么是XML元素

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

一个元素包含的部分

  1. 其他元素
  2. 文本内容
  3. 属性
  4. 以上全部

XML元素命名规则

  • 名称可以包含字母、数字以及其他的字符
  • 名称不能以数字或者标点符号开始
  • 名称不能以字母xml(或者 XML、Xml 等等)开始
  • 名称不能包含空格

XML属性

什么是XML属性

元素可以有属性,提供有关元素的额外信息

属性示例

type是属性的名称,gif是属性的内容

<file type="gif">computer.gif</file>

XML属性必须加引号

属性值必须被引号包围,不过单引号和双引号均可使用

XML内容完整示例

<bookstore>
    <book category="COOKING">
        <title lang="en">Everyday Italian</title>
        <author>Giada De Laurentiis</author>
        <year>2005</year>
        <price>30.00</price>
    </book>
    <book category="CHILDREN">
        <title lang="en">Harry Potter</title>
        <author>J K. Rowling</author>
        <year>2005</year>
        <price>29.99</price>
    </book>
    <book category="WEB">
        <title lang="en">Learning XML</title>
        <author>Erik T. Ray</author>
        <year>2003</year>
        <price>39.95</price>
    </book>
</bookstore>

XML文档约束

为什么需要文档约束

由于XML文件可以自定义标签,导致XML文件可以随意定义,程序在解析的时候可能出现问题

什么是XML文档约束

是用来限定xml文件中的标签以及属性应该怎么写,以此强制约束程序员必须按照文档约束的规定来编写xml文件

文档约束的分类

  1. DTD
  2. schema

DTD

一个文件后缀名为.dtd的文件,里面写了一些内容,xml可以通过这些内容判断出来可以写哪些内容和属性,由于语法比较复杂在这里就举一个示例

<!DOCTYPE note
[
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
]>
<?xml version="1.0" encoding="UTF-8" ?>
<!--在XML导入DTD约束文件-->
<!DOCTYPE 书架 SYSTEM "data.dtd">

schema约束

  1. schema可以约束具体的数据类型,约束能力上更强大
  2. schema本身也是一个xml文件,本身也受到其他约束文件的要求,所以编写的更加严谨
  3. 示例如下
<xs:element name="note">

<xs:complexType>
<xs:sequence>
<xs:element name="to" type="xs:string"/>
<xs:element name="from" type="xs:string"/>
<xs:element name="heading" type="xs:string"/>
<xs:element name="body" type="xs:string"/>
</xs:sequence>
</xs:complexType>

</xs:element>
<?xml version="1.0" encoding="UTF-8" ?>
<!--在XML导入xsd约束文件-->

3.XML解析

什么是XML解析

使用程序读取XML中的数据
在这里插入图片描述

两种解析方式

  1. SAX解析: 一行一行解析,适合解析大文件
  2. DOM解析: 把整个文件加载到内存中,把XML当成一棵树来解析

DOM常见的解析工具

名称 说明
JAXP SUN公司提供的一套XML的解析的API
JDOM JDOM是一个开源项目,它基于树型结构,利用纯JAVA的技术对XML文档实现解析、生成、序列化以及多种操作
dmo4j 是JDOM的升级品,用来读写XML文件的。具有性能优异、功能强大和极其易使用的特点,它的性能超过sun公司官方的dom技术,同时它也是一个开放源代码的软件,Hibernate也用它来读写配置文件
jsoup 功能强大DOM方式的XML解析开发包,尤其对HTML解析更加方便

4.XPath

为什么需要XPath

如果需要从XML文件中检索需要的某个信息,使用传统方式如DOM或SAX很麻烦,所以有了XPath

什么是XPath

  1. XPath在解析XML文档方面提供了一独树一帜的路径思想,更加优雅,高效
  2. XPath使用路径表达式来定位XML文档中的元素节点或属性节点
  3. XPath依赖于Dom4j技术实现的
posted @   单国玉  阅读(23)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示