XML的基本介绍
1.什么是XML
XML(可扩展标记语言)是一种用于描述数据的标记语言。XML文档(也称为XML文件)由标签和展示数据的内容组成。
与HTML不同的是,XML没有预定义标签,而是让用户自己定义标签,从而使得XML可以应用于各种不同的场景和领域。此外,XML并没有像HTML那样被用于Web页面设计,而是被广泛用于表示、传输、存储和交换数据,尤其是在各种数据的互操作性方面。
2.XML的基本结构
- xml第一行一般是一行申明。<?xml version=“1.0” encoding=“UTF-8”>
- xml有且仅有一个跟元素。
- xml的结构类似html文件。
- 针对特殊字符的处理,xml有两种处理方式:实体引用、CDATA标签。
则一个基本的XML结构如下:
<?xml version="1.0" encoding="UTF-8"?>
<rootElement attribute="attributeValue">
<childElement>
<subElement>Sub element text</subElement>
</childElement>
<childElement>
<subElement>Another sub element text</subElement>
</childElement>
</rootElement>
特殊字符的处理:实体引用
实体引用就是当你使用特殊字符的时候(比如 > 、< 等字符),破坏了原本xml文档的基本语法结构,从而可以使用其他的特殊字符进行代替的行为。
$gt; 代表 >
$lt; 代表 <
$amp; 代表 &
$apos; 代表 ’
$quot; 代表 "
<rootElement attribute="attributeValue">
<textElement>The <b>bold</b> text in XML</textElement>
</rootElement>
特殊字符的处理:CDATA标签
基本逻辑就是,当你遇到不想被xml解析的片段,就使用CDATA标签包裹起来。
语法:<![CDATA[ 内容部分 ]]>
其中内容部分的东西,就不会被xml文档解析。
<rootElement attribute="attributeValue">
<textElement><![CDATA[The <b>bold</b> text in XML]]></textElement>
</rootElement>
这样,a标签这一段就不会被xml进行解析。
3.XML语义约束
XML文档,写的规范不规范,需要进行约束,这个约束有两种约束方式,一种是DTD、一种是XML Schema文件。
- (DTD):DTD是一种针对XML文档定义元素和属性等结构的语言,可以用来定义XML文档的元素以及它们的层次结构、属性和实体等,从而约束XML文档的内容和结构。
一个DTD约束文件示例:
<!DOCTYPE webStore [
<!ELEMENT webStore (product*)>
<!ELEMENT product (name,price)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT price (#PCDATA)>
<!ATTLIST product id CDATA #REQUIRED>
<!ATTLIST price currency CDATA #IMPLIED>
]>
2.XML Schema:
与DTD类似,XMLSchema也是一种用于定义XML文档结构和约束的语言,它提供了许多DTD无法实现的强大功能。XML
Schema使用XML文档定义方式,可以定义元素、属性、数据类型、命名空间等,使得XML文档和数据能够更加精确地进行验证和约束。
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com/products" xmlns="http://www.example.com/products">
<xs:element name="webStore">
<xs:complexType>
<xs:sequence>
<xs:element name="product" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="price" type="xs:decimal"/>
</xs:sequence>
<xs:attribute name="id" type="xs:string" use="required"/>
<xs:attribute name="currency" type="xs:string" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Xpath表达式
Jaxen
Jaxen是一个java编写的Xpath开源库。
Jaxen底层依赖于DOM4j