Python中的XML

XML(eXtensibleMarkupLanguage)定义:可扩展标记语言

XML文档的而构成:

- 处理指令(可以认为一个文件内只有一个处理指令)
最多只有一行,且必须在第一行
内容是与xml本身处理起相关的一些声明或者指令
以xml关键字开头,一般用于声明XML的版本和采用的编码
version属性是必须的
encoding属性用来指出xml解释器使用的编码
- 根元素(一个文件内只有一个根元素)
在整个xml文件中,可以把他看作一个树形结构
根元素有且只能由一个
- 子元素
- 属性
- 内容
- 注释
注释不能嵌套在标签里
只有在注释的开始和结尾使用双短横线
三短横线只能出现在注释的开头而不能用在结尾

<name> <!-- wangdapeng -->   </name> #可以
<name <!-- wangdapeng -->>   </name> #不可以,注释在标签内
                
<!--my-name-by-wang--> #可以,注释内容可以有一个短横线
<!--my--name--by--wang-->#不可以,双短横线只能出现在开头或结尾
                
<!---my-name--> #可以, 三短横线只能出现在开头
<!---my-name---> #不可以, 三短横线只能出现在开头 

XML中保留字符的处理方法:
XML中使用的符号可能跟实际符号相冲突,典型的就是左右尖括号
1.使用实体引用(EntityReference)来表示保留字符

<score> score>80 </score> #有错误,xml中不能出现>
<score> score&gt;80</score> #使用实体引用

2.把含有保留字符的部分放在CDATA块内部,CDATA块把内部信息视为不需要转义

<![CDATA[
select name,age
from Student
where score>80
]]>

3.常用的需要转移的保留字符和对应实体引用
- &:&amp;
- <:&lt;
- >:&gt;
- ':&apos;
- ":&quot;
- 共五个,每个实体引用都以&开头并且以;结尾

为了避免命名冲突,需要给可能冲突的元素添加命名空间:

#两个元素中都有一个name属性
<Student>
    <Name>LiuYing</Name>
    <Age>23</Age>
</Student>

<Room>
    <Name>2014</Name>
    <Location>1-23-1</Location>
</Room>

如果归并上述两个元素,就有有两个name,会产生冲突,这时需要用到命名空间xmlns: xml name space的缩写:

<Schooler xmlns:student="http://my_student" xmlns:room="http://my_room">
                    <student:Name>LiuYing</student:Name>
                    <Age>23</Age>
                    <romm:Name>2014</room:Name>
                    <Location>1-23-1</Location>
</Schooler>

猜你喜欢

转载自www.cnblogs.com/wjw2018/p/10544907.html