目录:
一.什么是格式良好XML
为什么要学XML
XML的作用:
1.数据交互
2.做配置
标准的XML格式
二.元素定义
在XML加入DTD声明
元素分类
元素的额限制
三.属性定义
语法
属性类型Type
属性描述
一.什么是格式良好XML
格式良好的XML(eXtensible Markup Language)是指XML文档按照规范的语法和标准的标记规则编写,其中每个元素都被正确地嵌套和关闭,属性值使用正确的引号,并且符合XML相关规范。这种格式的XML文档能够被最终用户以及计算机程序正确地读取和解析,并且具有容易阅读和维护的优点。
为什么要学XML:
-
与其他格式兼容:XML是一种非常灵活的文本格式,可以轻松地与许多其他软件和语言一起使用。它通常被用作各种领域的数据交换格式,并被广泛应用于Web服务、数据库、电子商务、移动应用等领域。
-
处理复杂数据:XML在数据建模和存储方面非常强大,可以帮助处理和组织任意结构的数据。由于XML的可扩展性和丰富的标记语言,它可以轻松地表示复杂的数据关系和包含递归元素,使其成为处理数据密集型的应用程序的极佳选择。
-
易于理解和学习:XML使用标记和结构来定义文本中的数据,使其易于读取、解析和理解。它的语法简单明了,与HTML类似,因此易于学习和实现。
-
支持数据验证和数据交换:XML可以使用DTD或Schema等结构来验证数据,确保数据的正确性和完整性;同时,XML也可以用作各种系统之间的通用格式,便于系统之间的数据交换和互操作。
XML的作用:
-
数据交换和存储:XML是一种通用的数据格式,可以用于数据交换、存储和传输,与Python、Java、PHP等各种编程语言和Web技术无缝集成,广泛应用于电子商务、金融、医疗、移动应用和半导体制造等领域。
-
数据建模和描述:XML可以用作数据建模语言,用于描述数据结构、元数据、文档和业务规则。它可以根据特定的需求定义合适的数据模式,并提供有效的数据字典和说明文档。
-
数据验证和处理:XML可以通过定义相应的DTD或Schema来验证和处理数据。这些定义规则可确保XML文档与特定模式或格式相匹配,并在应用程序处理和处理数据时更加可靠和稳定。
-
数据发布和检查: XML可以用于发布和共享信息,例如RSS、Atom等网站新闻源,以及SOAP、REST等Web服务。XML也可以用于检索和查询文档和数据库,如XPath和XQuery等查询语言。
1.数据交互:
这段代码演示如何解析名为"employees.xml"的XML文件。每个employee元素都包含包括id、firstName和lastName在内的信息。在这个例子中,我们使用DOM解析器来读取XML数据,并将其转换为Java中的对象,以便在Java代码中进行操作。
public class XmlParserExample {
public static void main(String[] args) {
try {
// 创建DOM Parser
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
// 解析XML文件
Document doc = builder.parse("employees.xml");
// 获取所有 employee 元素
NodeList employees = doc.getElementsByTagName("employee");
// 遍历每个 employee 元素
for (int i = 0; i < employees.getLength(); i++) {
Element employee = (Element) employees.item(i);
String id = employee.getAttribute("id");
String firstName = employee.getElementsByTagName("firstName").item(0).getTextContent();
String lastName = employee.getElementsByTagName("lastName").item(0).getTextContent();
System.out.println("Employee " + id + ": " + firstName + " " + lastName);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
2.做配置:
<?xml version="1.0" encoding="UTF-8"?>
<database>
<server>localhost</server>
<port>3306</port>
<dbname>mydb</dbname>
<username>user</username>
<password>password</password>
</database>
标准的XML格式:
XML标准指的是XML文档的结构和语法规范。XML标准由W3C制定和管理,主要由三个部分组成:XML、XML命名空间和XML模式。其中,XML指的是可扩展标记语言,是一种用于传输和存储数据的文本格式。
<?xml version="1.0" encoding="UTF-8"?>
<root>
<employee>
<id>小狗子</id>
<firstName>John</firstName>
<lastName>Doe</lastName>
<email>john.doe@example.com</email>
<phone>123-456-7890</phone>
</employee>
<employee>
<id>小流氓</id>
<firstName>Jane</firstName>
<lastName>Smith</lastName>
<email>jane.smith@example.com</email>
<phone>123-456-7890</phone>
</employee>
</root>
二.元素定义:
XML元素,也称为XML标签,是XML文档的基本组成单元,是用于存储、传输和处理数据的标记符号。每个XML元素由开始标记、结束标记和中间的数据组成。开始标记和结束标记都是用一对尖括号"<" 和 “>” 包围的字符序列,中间的数据是元素的内容。
以下是XML元素的定义格式:
<element>content</element>
在这个格式中,<element>
是元素的开始标记,</element>
是结束标记,content
是元素的内容。XML元素也可以没有内容,例如:
<empty-element/>
在这个例子中,使用斜杠和尖括号表示该元素没有内容。
XML元素可以具有属性,这些属性用于存储元素的附加信息。属性是元素的一个名称或值对,位于开始标记内。例如:
<book id="101">
<title>The Great Gatsby</title>
<author>F. Scott Fitzgerald</author>
<year>1925</year>
</book>
在这个例子中,<book>
元素具有一个id属性,该属性储存了该元素的唯一标识符。属性值须用引号(单引号或双引号)包围。
XML元素的命名遵循某些规则,包括:
- 名称必须以字母或下划线开头;
- 名称不能以数字或标点开头;
- 名称只能包含字母、数字、下划线、短横线、点、冒号和非ASCII字符;
- 名称必须在整个文档中唯一。
在XML加入DTD声明
在XML中加入DTD声明
要在XML中加入DTD声明,可以在XML文件的开头添加以下行:
<!DOCTYPE 根元素名 SYSTEM "DTD文件路径">
其中,<!DOCTYPE>
是DTD声明的关键字,根元素名
是XML文件中根元素的名称,DTD文件路径
是DTD文件的路径。举例来说,假设XML文件的根元素为myroot
,DTD文件名为mydtd.dtd
,则在XML文件的开头应添加以下行:
<!DOCTYPE myroot SYSTEM "mydtd.dtd">
元素分类:
空元素:
DTD中的空元素是一种没有内容的元素。它们通常用于声明只有一个标记的元素。
DTD中可以使用“EMPTY”或“ANY”关键字来表示空元素。其中,"EMPTY"表示该元素没有子元素且没有内容,而"ANY"表示该元素允许包含任何内容。
例如,以下是定义一个空元素 “image” 的 DTD:
<!ELEMENT image EMPTY>
<!ATTLIST image
src CDATA #REQUIRED
alt CDATA #IMPLIED
width CDATA #IMPLIED
height CDATA #IMPLIED
>
文本元素:
DTD中的文本元素用于定义包含纯文本信息的元素,这些元素不能包含其他元素或标记,只能包含文本内容。
在DTD中可以使用“ (#PCDATA)”关键字表示文本元素。其中,“#PCDATA”代表解析器可以解析的“解析器数据”,即文本数据。
例如,以下是一个定义为文本元素的DTD示例:
<!ELEMENT message (#PCDATA)>
上述示例中,定义了一个名为 “message” 的元素,并使用 “(#PCDATA)”关键字来表示该元素只能包含纯文本内容,不能包含其他元素。
在XML文档中,可以使用文本元素来表示短语、说明、注释等纯文本内容。例如:
<message>Hello World!</message>
混合元素:
DTD中可以使用混合模式来定义元素内容,即 XML 元素可以同时包含文本和其他元素。
在混合模式中,可以使用“(#PCDATA)”表示可以包含文本,同时也可以使用其他元素的名称表示可以包含其他元素。在语法中,可以使用“ | ”或“,”分隔符表示可以包含多种内容。
例如,以下示例中定义了一个混合元素:
<!ELEMENT person (#PCDATA | name | age | gender)*>
上述示例中,“person” 元素的内容可以包含任何次序的文本或者 “name”、“age” 和 “gender” 元素。其中“ * ”表示可以出现 0 次或多次。
在 XML 文档中,混合元素可以像下面这样使用:
<person>
My name is <name>John Doe</name>.
I am <age>30</age> years old and my gender is <gender>male</gender>.
</person>
上述示例中, “person” 元素的内容中混合了文本和三个其他元素。
元素的额限制:
例如,以下是一个限制出现次数的 DTD 示例:
<!ELEMENT message (greeting, text, signature?)>
上述示例中,“ signature?” 代表该元素为可选元素,出现 0 次 或 1 次。
上述示例中,“ () ” 中的元素依次排列,表示在 XML 文档中, “ greeting ” 节点必须先出现, “ text ” 节点出现在 “ greeting ” 后面,最后可选地出现 “ signature ” 节点。
通过以上方式,我们可以在 DTD 中灵活地定义元素的出现次数和顺序。这有助于确保 XML 文档符合指定的格式和结构。
在元素类型定义中,可以使用括号和逗号来限制元素的出现顺序。例如,以下是一个限制元素出现顺序的 DTD 示例:
<!ELEMENT message (greeting, text, signature?)>
-
在 DTD 中,可以使用以下方式来限制元素的出现次数和顺序:
- 限制元素出现次数:
-
在元素类型定义中,可以使用以下符号来限制元素出现次数:
- “?”:表示该元素出现 0 或 1 次。
- “*”:表示该元素出现 0 次或任意多次。
- “+”:表示该元素必须出现至少一次。
- 限制元素出现顺序:
三.属性定义:
在XML DTD中,可以使用<!ATTLIST>
声明来定义元素的属性,<!ATTLIST>
用于定义一个元素可用的属性及其值域和默认值等信息,语法格式如下:
<!ATTLIST 元素名
属性名1 属性类型1 属性默认值1
属性名2 属性类型2 属性默认值2
...
属性名n 属性类型n 属性默认值n>
其中,元素名
为要定义属性的元素名称,属性名
、属性类型
和属性默认值
分别为属性的名称、类型和默认值。每个属性的定义需占用一行,各个属性定义之间必须以空格或制表符分隔。
以下是一个例子:
<!ELEMENT book (title, author)>
<!ATTLIST book
id CDATA #REQUIRED
lang CDATA "en"
edition CDATA "1">
语法:
<!DOCTYPE note [
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
<!ATTLIST note date CDATA #IMPLIED>
]>
属性类型Type
下面是几种常见的属性类型:
-
CDATA:表示普通的字符串,即标准文本;
-
NMTOKEN:表示不含空格或其他分隔符的标记名称,如元素和属性的名称;
-
ID:表示一个唯一的标识符,不能重复,并且只能出现一次;
-
IDREF:表示一个对文档中某个元素的唯一引用,只能引用元素ID;
-
IDREFS:表示一个对文档中多个元素的唯一引用,可以引用多个元素ID,用空格分隔;
-
ENTITY:表示一个外部实体的名称,与 ENTITY 声明一起使用;
-
ENTITIES:表示多个外部实体的名称,可以用空格分隔;
-
NOTATION:表示专门用于标识一种特定类型的属性值,与 PUBLIC 和 SYSTEM 声明一起使用。
属性类型 Type 需要在 DTD 中进行声明。例如,要声明 ID 和 CDATA 类型的属性:
<!ELEMENT person (name, email)>
<!ATTLIST person
id ID #REQUIRED
email CDATA #REQUIRED>
这个 DTD 将元素 person 定义为必须拥有 ID 和 email 属性,并且 ID 属性值必须是唯一的。
属性描述:
XMLDTD 指的是 XML Document Type Definition,它是一种用于定义 XML 文档结构的语法规则。在 XMLDTD 中,可以使用属性描述来定义 XML 元素的属性。属性描述定义了属性的名称、数据类型、默认值和可选项,以及其他限制和规则。
属性描述可以包含以下内容:
-
属性名称:使用属性名称来定义属性。
-
属性数据类型:使用数据类型来限制属性的取值范围。
-
属性默认值:使用默认值来指定未提供属性值时的默认值。
-
属性可选项:使用可选项来定义属性是否必填。
-
属性其他限制和规则:使用其他限制和规则来定义属性的其他限制和规则,比如允许的最小值、最大值等。
例如,以下是一个示例 XMLDTD 的属性描述:
<!DOCTYPE note [ <!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
<!ATTLIST note date CDATA #IMPLIED priority (high|normal|low) "normal" >
]>
在上面的示例中,note 元素定义了两个属性:date 和 priority。其中 date 属性的数据类型是 CDATA,表示可以包含任意字符数据;priority 属性的数据类型是一个枚举类型,取值必须是 high、normal 或 low 之一。同时,priority 属性还指定了一个默认值 normal。