Qt模块化笔记之core——认识XML可扩展标记语言
本系列将涉及的类有:
以QXmlStreamReader和QXmlStreamWriter为中心,介绍它们的使用。 除这些外,Qt还提供了自己的解析引擎(以QXmlSimpleReader为中心),然而文档说QXmlStreamReader is a faster and more convenient replacement for Qt's own SAX parser (seeQXmlSimpleReader)(QXmlStreamReader比Qt自己的引擎更快更方便,是更好的替代品).故而,讨论以上类更明智些。而且它们的关系更紧凑…… —————————————————————————————————————————————————————————————— 在您学习这些类之前,必须对XML有相当的了解,才能运用自如,最好把这里:XML教程的教程的基础部分看完。 下面介绍它,即使你不看上面教程,也许也能很快了解它的。 先认识下xml: XML 指可扩展标记语言(EXtensible Markup Language) XML可用于当作数据库一样保存数数据,也可以像QSettings那样用于保存程序的大小宽高等,还可以在网络中传输。 一段极简单XML代码:
<note> <to>张三</to> <from>张三老婆</from> <body>别忘吃饭!</body> </note> 上面代码的所有英文及中文都是自己定义的,表示一个便签note,是张三老婆留给他的,提醒他不要忘记吃饭…… XML语言的标签由大于号与小于号组成,格式为: <标签名></标签名>。带/的表示关闭标签,XML很严格,一定是需要它的,不然就解析出错。这些标签不断嵌套就可组成复杂的文档了。可以观察这个比较复杂的XML:点击打开链接,内部<!--注释-->为注释内容。 (到此,如果你看得头晕了,先跳过下面的内容,看本系列的其它篇吧……) ———————————————————————————————————————————————————————————————— 接下来,看一篇五脏俱全的: <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!--这是一个便签-->
<!DOCTYPE Notes [
<!ELEMENT note (date,message)>
<!ELEMENT date (#PCDATA)>
<!ELEMENT message (#PCDATA)>
]>
<Notes>
<note>
<date>2月1日</date>
<message>别忘了参加party</message>
</note>
<note>
<date>2月14日</date>
<message>今天情人节啊</message>
</note>
<note>
<date>2月18日</date>
<message>今天自己煮饭吧</message>
</note>
</Notes>
第一行解释(来自点击打开链接):version="1.0" ,它是表示版本为1.0; standalone 定义了外部定义的 DTD (上面第三行开始的几行,具体了解DTD见点击打开链接)文件的存在性. standalone element 有效值是 yes 和 no. 如下是一个例子: <?xml version="1.0" encoding="UTF-8" standalone="no"?> 第二行是注释语句。 第三行及往下四行是DTD文档声明,一般XML文档中很少见它。 其它就是主要内容了。<Notes>是根元素,必属包含。其它元素都是父子的关系 Qt中头部与DTD部分,对应的名称与所表示部分如下: StartDocument()——<?xml version="1.0" encoding="UTF-8" standalone="yes"?> documentVersion()——version="1.0" documentEncoding()——encoding="UTF-8" StandaloneDocument()——standalone="yes" DTD notationDeclarations()——<!ELEMENT note (date,message)> entityDeclarations()——<!ELEMENT date (#PCDATA)><!ELEMENT message (#PCDATA)> dtdName——Notes,<!DOCTYPE 后那个 dtdPublicId()和dtdSystemId()——注来自点此查看区别 注:[systemId: 外部资源(多半是DTD)的URI,比如本地文件file:///usr/share/dtd/somefile.dtd或者网络某个地址的文件http://www.w3.org/somefile.dtd; ———————————————————————————————————————————————————————————— XML还有属性这一说法。但由于属性会引起一些问题,W3C建议“请尽量使用元素来描述数据。而仅仅使用属性来提供与数据无关的信息。” 除XML的基础外,它的命名空间部分也需要认识下:点击打开链接 以下是一篇比较常见的格式文:
<?xml version="1.0" encoding="UTF-8"?> <Notes> <note> <date>2月1日</date> <message>别忘了参加party</message> </note> <note> <date>2月14日</date> <message>今天情人节啊</message> </note> <note> <date>2月18日</date> <message>今天自己煮饭吧</message> </note> </Notes> 以下是为接下来内容准备的,带命名空间的格式文(xmlns即是XMLNamespace,是个XML自带的属性。用于标示命名空间的地址不会被解析器用于查找信息。其惟一的作用是赋予命名空间一个惟一的名称(代码中http:://……)。): <?xml version="1.0" encoding="UTF-8"?> <tables> <table xmlns:h="http://www.w3.org/TR/html4/"> <tr> <td>Apples</td> <td>Bananas</td> </tr> </table> <table xmlns:f="http://www.w3school.com.cn/furniture"> <name>African Coffee Table</name> <width>80</width> <length>120</length> </table> </tables> —————————————————————————————————————————————————————————— 分辨URI与URL 统一资源标识符(Uniform Resource Identifier (URI)) —————————————————————————————————————————————————————————— 更多参考: 1,XML学习笔记之文档类型定义(DTD) 和实体(ENTITY) 2,XML与DTD(里面有一些记号声明的说明),除本篇外,还有几篇,算是作者的心得吧 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |