题外:为什么我要学XML呢?因为发现ROS系统里面有好多程序,是XML的,当然,我看不到,所以就来补补课,因为暂时只要求能看懂,或能简单写几行,所以,记述的也就不是太详细了。
如何识别XML?
可以先介绍XML的一些简单的规则,XML本身就是一个文本文件,XML是通过标记来描述文件的,比如:
<user> </user>
“user”这两个就是标记,注意标记有开头就有结尾,结尾就是在开头的前面加一个”/“。
可以描述其更描述的信息,比如想描述这个人的姓名和性别,那接着在标记里面再写就行了,格式相同
<user> <name>laotan</name> <gender>男</gender> </user>
这就是一段XML的程序了,可以用来描述文档,当然还有具体的语法格式,只要类似于这种标记来写的,就是一个XML文件。
XML的优缺点
XML是纯文本形式的,在每个系统上,都是可以支持的,同时对语言也没有太多的要求,所以,ROS系统中有一些文档是XML格式的,而且是作为轻量级的数据存储来存在。当然,这种方式的确定也是显而易见的,要插入太多的标记,反而会是编程的效率变低。
最常用就是在配置文件里面使用了。
XML语法的详解
概念
标签:开始标签对应结束标签,中间的是子标签(“title” “author” “publish”)。
属性及属性值:”id“是标签的属性,一定要跟开始标签空一格,而且属性不以单独出现,属性都会有一个值,比如该例当中 就有属性值。
文本:标签中间的内容就叫文本(PCDATA,文本字符串)(该例当中:“跟老谭学XML”等等就是文本)。
元素:最后一个就是元素的概念,这整块儿都可以称之为一个video元素。一个元素包含标签及文本,当然还有其属性,比如,上例整个是一个video元素,而下面就是一个title元素。
<title>跟老谭学XML</title>
整体结构
什么叫:"有且仅有一个根元素"?
意思就是说,
<?xml version="1.0" ecoding="UTF-8"?>//这个是头文件先不用管 <user> <name>laotan</name> <gender>男</gender> </user> <dept> </dept>
像这样的代码,就会报错,因为“user”和“dept”冲突了,要么把这两个再放到一个共同的根元素里面,要么删除掉一个。
<?xml version="1.0" ecoding="UTF-8"?>//这个是头文件先不用管 <root> <user> <name>laotan</name> <gender>男</gender> </user> <dept> </dept> </root>
这样才正确,(我理解的啊,就是开始标签只能有一个,不能有多个,其它的就只能放到开始标签里面了)
那什么叫做:“空元素必须严格使用空元素语法”?
还以上面的那段代码为例,“dept”是没有内容的,那有固定的格式:
<dept/>
还需要强调的是,属性必须要有值!即便没有也要写成
<name id="a" c="">laotan</name>
空白字符非常重要,一不小心就会让程序取错位置。
元素命名
着重强调:开头不能是数字或者特殊字符;名字中不能出现冒号。
强调:推荐使用双引号。且属性不能重复。
字符数据
这是什么意思呢?如果你想表达一个“<书名>”这样的式子,系统会报错,因为"<"与"<>"系统分不清楚,故而用其他的实体引用来表述“<”这个符号就可以了。
<?xml version="1.0" ecoding="UTF-8"?>//这个是头文件先不用管 <root> <user> <name> laotan &It;书名> </name> <gender>男</gender> </user> <dept/> </root>
CDATA标记
将那些有可能产生混淆的文本,放在CDATA所标记的文本里面,
<?xml version="1.0" ecoding="UTF-8"?>//这个是头文件先不用管 <root> <user> <name> laotan <![CDATA[ <书名> ]]> </name> <gender>男</gender> </user> <dept/> </root>
声明语句
记住就行了!
注释
感谢:本次学习笔记都是从http://e-learning.51cto.com/course/2905
《跟老谭学XML-新手入门基础知识》
记述而来 感谢此教程对我学习的帮助!