XML原理

本文介绍了XML的基本概念及其在数据传输和存储中的应用。探讨了XML的语法规范,包括标签使用规则、命名空间、实体引用等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[b]XML 简介[/b]
XML 被设计用来传输和存储数据。类似于JSON。

XML 指可扩展标记语言(EXtensible Markup Language)
XML 是一种标记语言,很类似 HTML
XML 的设计宗旨是传输数据,而非显示数据
XML 标签没有被预定义。您需要自行定义标签。
XML 被设计为具有自我描述性。
XML 是 W3C 的推荐标准

XML 被设计用来结构化、存储以及传输信息。(没有格式双方很难知道信息的结构内容)


[b]实例:[/b]
<?xml version="1.0" encoding="utf-8"?>

<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>

[b]实例解释:[/b]
第一行是 XML 声明。它定义 XML 的版本 (1.0) 和所使用的编码 (ISO-8859-1 = Latin-1/西欧字符集)。

描述文档的根元素
<note> //根元素的开始
**
</note> //根元素的结尾

4个子元素
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>

就这样XML文档会形成一种树结构,如下:
<?xml version="1.0" encoding="utf-8"?>

<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>
<A>George</A>
<B>John</B>
<C>Reminder</C>
</body>
</note>


[b]所有 XML 元素都须有关闭标签[/b]
<p>This is a paragraph //错
<p>This is a paragraph</p> //对


[b]XML 标签对大小写敏感[/b]
<Message>这是错误的。</message> //错
<message>这是正确的。</message> //对


[b]XML 必须正确地嵌套[/b]
<b><i>This text is bold and italic</b></i> //错
<b><i>This text is bold and italic</i></b> //对


[b]XML 的属性值须加引号[/b]
<note date=08/08/2008> //错
<to>George</to>
<from>John</from>
</note>

<note date="08/08/2008"> //对
<to>George</to>
<from>John</from>
</note>


[b]实体引用[/b]:就是特殊字符的转意。
< < 小于
> > 大于
& & 和号
&apos; ' 单引号
" " 引号

<message>if salary < 1000 then</message>
想要的:
<message>if salary < 1000 then</message>


[b]XML 中的注释[/b]
<!-- This is a comment -->


[b]在 XML 中,空格会被保留[/b]

HTML 会把多个连续的空格字符裁减(合并)为一个:
HTML: Hello my name is David.
输出: Hello my name is David.

在 XML 中,文档中的空格不会被删节。


[b]XML 元素[/b]
开始标签直到(且包括)结束标签的部分。如:
<from>John</from>

元素可包含其他元素、文本或者两者的混合物。元素也可以拥有属性。如:
<book category="CHILDREN"> //category(属性)
<title>Harry Potter</title> //book的子元素,这个子元素只有文本内容
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>


[b]XML 命名规则[/b]
XML 元素必须遵循以下命名规则:
名称可以含字母、数字以及其他的字符
名称不能以数字或者标点符号开始
名称不能以字符 “xml”(或者 XML、Xml)开始
名称不能包含空格


[b]XML 元素 vs. 属性[/b]
<person sex="female"> //属性
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person>

<person>
<sex>female</sex> //元素
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person>

没有什么规矩可以告诉我们什么时候该使用属性,而什么时候该使用子元素,在 XML 中,
您应该尽量避免使用属性。如果信息感觉起来很像数据,那么请使用子元素吧。

属性无法包含多重的值(元素可以)
属性无法描述树结构(元素可以)
属性不易扩展(为未来的变化)
属性难以阅读和维护


[b]XML 命名空间(XML Namespaces)[/b]
XML 命名空间提供避免元素命名冲突的方法。

这个 XML 文档携带着某个表格中的信息:
<table>
<tr>
<td>Apples</td>
<td>Bananas</td>
</tr>
</table>

这个 XML 文档携带有关桌子的信息(一件家具):
<table>
<name>African Coffee Table</name>
<width>80</width>
<length>120</length>
</table>

由于两个文档都包含带有不同内容和定义的 <table> 元素,就会发生命名冲突。


[b]使用前缀来避免命名冲突[/b]
<h:table>
<h:tr>
<h:td>Apples</h:td>
<h:td>Bananas</h:td>
</h:tr>
</h:table>

<f:table>
<f:name>African Coffee Table</f:name>
<f:width>80</f:width>
<f:length>120</f:length>
</f:table>


[b]使用命名空间(Namespaces)[/b]
<h:table xmlns:h="http://www.w3.org/TR/html4/">
<h:tr>
<h:td>Apples</h:td>
<h:td>Bananas</h:td>
</h:tr>
</h:table>
此 XML 文档携带着有关一件家具的信息:
<f:table xmlns:f="http://www.w3school.com.cn/furniture">
<f:name>African Coffee Table</f:name>
<f:width>80</f:width>
<f:length>120</f:length>
</f:table>


[b]默认的命名空间(Default Namespaces)[/b]
为元素定义默认的命名空间可以让我们省去在所有的子元素中使用前缀的工作。
<table xmlns="http://www.w3.org/TR/html4/">
<tr>
<td>Apples</td>
<td>Bananas</td>
</tr>
</table>
此 XML 文档携带着有关一件家具的信息:
<table xmlns="http://www.w3school.com.cn/furniture">
<name>African Coffee Table</name>
<width>80</width>
<length>120</length>
</table>


[b]命名空间是就近原则的[/b]
<?xml version="1.0" encoding="utf-8"?>
<root xmlns="dotnet" xmlns:w="wpf">
<!-- xmlns: dotnet -->
<a>data in a</a> //默认的命名空间
<!-- xmlns: dotnet -->
<w:b>data in b</w:b> //w命名空间
<!-- xmlns: wpf -->
<c xmlns="silverlight">
<!-- xmlns: silverlight -->
<w:d>
<!-- xmlns: wpf -->
<e>data in e</e>
<!-- xmlns: silverlight --> //就近原则
</w:d>
</c>
</root>


[b]CDATA[/b]
术语 CDATA 指的是不应由 XML 解析器进行解析的文本数据(Unparsed Character Data)。(就是里面的数据不进行XML解析)
CDATA 部分由 "<![CDATA[" 开始,由 "]]>" 结束:
<script>
<![CDATA[ //开始
function matchwo(a,b)
{
if (a < b && a < 0) then
{
return 1;
}
else
{
return 0;
}
}
]]> //结束
</script>


参考原文:[url]http://www.w3school.com.cn/xml[/url]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值