XML概念

XML是eXtensible Markup Langguage 缩写,称之为可扩展标记语言。XML 被设计用来传输和存储数据。与HTML不同的是:

HTML被设计用来显示数据,其焦点是数据的外观。

  • XML被设计用来描述数据,其焦点是数据的内容。
  • XML 标签没有被预定义。您需要自行定义标签。
  • XML 被设计为具有自我描述性。
  • XML 是 W3C 的推荐标准

XML的用途

XML 简化数据共享

XML 数据以纯文本格式进行存储,因此提供了一种独立于软件和硬件的数据存储方法。这让创建不同应用程序可以共享的数据变得更加容易。

XML 简化数据传输

通过 XML,可以在不兼容的系统之间轻松地交换数据。

XML 简化平台的变更

XML 数据以文本格式存储。这使得 XML 在不损失数据的情况下,更容易扩展或升级到新的操作系统、新应用程序或新的浏览器。

XML文档结构

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

<?xml version="1.0" encoding="UTF-8"?>
<root>
<child>
<subchild>.....</subchild>
</child>
</root>

1.XML申明

<?xml version="1.0" encoding="ISO-8859-1"?>

申明必须在第一行,在其前面不能有空白、其他的处理指令或注释。

  • 申明版本属性:目前该属性的值通常为1.0

  • 声明编码属性:默认值UTF-8

2.根标记

XML文档中有且仅有一个根标记,其他标记都必须封装在根标记中。

3.树形结构

XML 文档中的元素形成了一棵文档树。这棵树从根部开始,并扩展到树的最底端。所有元素均可拥有子元素,父、子以及同胞等术语用于描述元素之间的关系。

父元素拥有子元素。相同层级上的子元素成为同胞(兄弟或姐妹)。所有元素均可拥有文本内容和属性(类似 HTML 中)。

XML的语法

  • 所有 XML 元素都须有关闭标签

  • XML 标记对大小写敏感
  • XML 标记命名必须以下划线或字母开头,"<"和标记名字 之间不要有空格。
  • XML 必须正确地嵌套,形如:<b><i>This text is bold and italic</i></b>
  • XML 文档必须有根标记
  • XML 的属性值须加引号
  • 在 XML 中,空格会被保留
  • XML 中的注释:<!-- This is a comment -->
  • 实体引用,在XML中的特殊字符应当用引用实体:

&lt;

<

&gt;

>

&amp;

&

&apos;

'

&quot;

"

XML标记

标记由左尖括号(<)和右尖括号(>)以及之间的文本组成。有开始标记(例如 <name>)和结束标记(例如 </name>)。

XML 标记命名必须以下划线或字母,"<"和标记名字之间不要有空格。

XML 标记对大小写敏感

1.空标记

空标记以"<"标识开始,"/>"结束。可以有属性。

<chair width="24" height="12" />

2.非空标记

非空标记必须由“开始标记”和“结束标记”组成,成对出现。

开始标记"<"标识开始,">"结束。可以有属性。

结束标记以"</"开始,">"结束。不能有属性。

<T28>
<开车时间>20点58分</开车时间>
<终到时间>08点18分</终到时间>
</T28>

3.CDATA段

术语 CDATA 指的是不应由 XML 解析器进行解析的文本数据(Unparsed Character Data)。

CDATA段用"<![CDATA["开始,"]]>"结束。之间可以包含任意字符。但CDATA段不能嵌套。

<script>
<![CDATA[
function matchwo(a,b)
{
if (a < b && a < 0) then
{
return 1;
}
else
{
return 0;
}
}
]]>
</script>

在上面的例子中,解析器会忽略 CDATA 部分中的所有内容。

XML元素

元素是开始标记、结束标记以及位于二者之间的所有内容。元素的名字和属性就是该元素内最外层标记的名字和属性。

元素可包含其他元素、文本或者两者的混合物。元素也可以拥有属性。

<bookstore>
<book category="CHILDREN">
<title>Harry Potter</title>
<author>J K. Rowling</author>
</book>
<book category="WEB">
<title>Learning XML</title>
<author>Erik T. Ray</author>
</book>
</bookstore>

在上例中,<bookstore> 和 <book> 都拥有元素内容,因为它们包含了其他元素。<author> 只有文本内容,因为它仅包含文本。

在上例中,只有 <book> 元素拥有属性 (category="CHILDREN")。

XML命名空间

XML 命名空间提供避免元素命名冲突的方法。

命名冲突

假如这两个 XML 文档被一起使用,由于两个文档包含带有不同内容和定义的相同名字的元素,就会发生命名冲突。 XML 解析器无法确定如何处理这类冲突。

使用前缀来避免命名冲突

<h:table>
<h:tr>
<h:td>Apples</h:td>
</h:tr>
</h:table>

使用命名空间(Namespaces)

<f:table xmlns:f="http://www.XXX.com.cn/furniture">
<f:name>African Coffee Table</f:name>
<f:width>80</f:width>
</f:table>

XML Namespace (xmlns) 属性

XML 命名空间属性被放置于元素的开始标签之中,并使用以下的语法:

xmlns:namespace-prefix="namespaceURI"

当命名空间被定义在元素的开始标签中时,所有带有相同前缀的子元素都会与同一个命名空间相关联。

默认的命名空间(Default Namespaces)

为元素定义默认的命名空间可以让我们省去在所有的子元素中使用前缀的工作。

请使用下面的语法:xmlns="namespaceURI"

<table xmlns="http://www.w3.org/TR/html4/">
<tr>
<td>Apples</td>
</tr>
</table>

XML认识的更多相关文章

  1. XStream将java对象转换为xml时,对象字段中的下划线“_”,转换后变成了两个的解决办法

            在前几天的一个项目中,由于数据库字段的命名原因 其中有两项:一项叫做"市场价格"一项叫做"商店价格" 为了便于区分,遂分别将其命名为market ...

  2. .NET Core采用的全新配置系统[9]: 为什么针对XML的支持不够好?如何改进?

    物理文件是我们最常用到的原始配置的载体,最佳的配置文件格式主要由三种,它们分别是JSON.XML和INI,对应的配置源类型分别是JsonConfigurationSource.XmlConfigura ...

  3. WebApi接口 - 响应输出xml和json

    格式化数据这东西,主要看需要的运用场景,今天和大家分享的是webapi格式化数据,这里面的例子主要是输出json和xml的格式数据,测试用例很接近实际常用情况:希望大家喜欢,也希望各位多多扫码支持和点 ...

  4. XML技术之DOM4J解析器

    由于DOM技术的解析,存在很多缺陷,比如内存溢出,解析速度慢等问题,所以就出现了DOM4J解析技术,DOM4J技术的出现大大改进了DOM解析技术的缺陷. 使用DOM4J技术解析XML文件的步骤? pu ...

  5. UWP开发之Mvvmlight实践六:MissingMetadataException解决办法(.Net Native下Default.rd.xml配置问题)

    最近完成一款UWP应用,在手机端测试发布版(Release)的时候应用莫名奇妙的强行关闭,而同样的应用包在PC端一点问题都没有,而且Debug版在两个平台都没有问题,唯独手机的Release版有问题. ...

  6. PHP中遍历XML之SimpleXML

    简单来讲述一些XML吧,XML是可扩展标记语言,是一种用于标记电子文件使其具有结构性的标记语言.XML是当今用于传输数据的两大工具之一,另外一个是json. 我们在PHP中使用XML也是用来传输数据, ...

  7. Asp.Net 操作XML文件的增删改查 利用GridView

    不废话,直接上如何利用Asp.NET操作XML文件,并对其属性进行修改,刚开始的时候,是打算使用JS来控制生成XML文件的,但是最后却是无法创建文件,读取文件则没有使用了 index.aspx 文件 ...

  8. Mybatis XML配置

    Mybatis常用带有禁用缓存的XML配置 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE ...

  9. Drawable实战解析:Android XML shape 标签使用详解(apk瘦身,减少内存好帮手)

    Android XML shape 标签使用详解   一个android开发者肯定懂得使用 xml 定义一个 Drawable,比如定义一个 rect 或者 circle 作为一个 View 的背景. ...

  10. C#反序列化XML异常:在 XML文档(0, 0)中有一个错误“缺少根元素”

    Q: 在反序列化 Xml 字符串为 Xml 对象时,抛出如下异常. 即在 XML文档(0, 0)中有一个错误:缺少根元素. A: 首先看下代码: StringBuilder sb = new Stri ...

随机推荐

  1. Binary Tree Level Order Traversal II 解题思路

    思路: 与Binary Tree Level Order Traversal I 几乎一样.只是最后将结果存放在栈里,然后在栈里再传给向量即可. 再次总结思路: 两个queue,先把第一个放进q1,循 ...

  2. Shell脚本——中继DHCP服务器自动部署

    详细说明参照: (四)跟我一起玩Linux网络服务:DHCP服务配置之中继代理 vm1的脚本是: #! /bin/bash HIPSEG="10.10.10" SIPSEG=&qu ...

  3. clientX/Y,pageX/Y,offsetX/Y,layerX/Y,screenX/Y ,offsetTop,offsetLeft 详解

    clientX/Y: clientX/Y获取到的是触发点相对浏览器可视区域左上角距离,不随页面滚动而改变 兼容性:所有浏览器均支持 pageX/Y: pageX/Y获取到的是触发点相对文档区域左上角距 ...

  4. 【随记】关于List集合用Linq GroupBy分组过后的遍历小记

    List<LeaderKaoQin> lstLeader = new List<LeaderKaoQin>();//一个List集合IGrouping<string, L ...

  5. 关于python decode()和 encode()

    1.先收集一下这几天看到的关于decode()解码和encode()编码的用法 bytes和str是字节包和字符串,python3中会区分bytes和str,不会混用这两个.字符串可以编码成字节包,而 ...

  6. windows通过Composer安装yii2

    1. php.ini 中;extension=php_openssl.dll(取消注释,不然在安装composer过程中会报错) 集成环境最好去php目录中打开php.ini文件,确定;extensi ...

  7. EntityFramework 和 linq 判断是否在指定时间段内的方法

    EntityFramework: System.Data.Objects.EntityFunctions.DiffDays(DateTime.Now, inputTime)判断当前时间与指定时间相差多 ...

  8. 《Journey》风之旅人;

    俩个人在茫茫世界相遇,互不相识,却能互相取暖,一路旅程,看尽了美丽的风景,也共同经历了暴风雪,然而该来的人会来,该走的人会走,这不就是人生旅途?

  9. python ^M 产生的原因 及 lxml 如何获取text的原因

    其实跟踪一下会发现,^M 是由于 /r/n 所造成的. article = dom_c.xpath('//td[@id="article_content"]//text()')co ...

  10. C语言嵌入式系统编程修炼之三:内存操作

    数据指针 在嵌入式系统的编程中,常常要求在特定的内存单元读写内容,汇编有对应的MOV指令,而除C/C++以外的其它编程语言基本没有直接访问绝对地址的能力.在嵌入式系统的实际调试中,多借助C语言指针所具 ...