python 文本解析 XML基础
来源:互联网 发布:淘宝确认收货无法评价 编辑:程序博客网 时间:2024/06/05 03:52
Python xml 基础
什么是xml?
- XML指可扩展标记语言(Extensible Markup Language)
- XML被设计用于结构化、存储 和传输数据
- XML是一种标记语言,很类似于HTML
- XML没有像HTML那样具有预定义标签,需要程序员自定义标签。
- XML被设计为具有自我描述性,并且是W3C的标准
XML文档(树结构)
XML文档形成了一种树结构,它从“根部”开始,然后扩展到“枝叶”。
XML文档必须包含根元素,该元素是所有其他元素分父元素,文档中的所有元素形成了一棵文档树,这棵树从根开始,并扩展到树的最低端,并且所有的元素都可以有子元素:
<root><child><subchild>....</subchild></child></root>
父元素拥有子元素,相同层级上的子元素成为同胞(兄弟或姐妹)。
XML中所有元素都可以有文本内容和属性,类似于HTML。
XML和HTML之间的差异
- XML被设计用于存储 和传输数据,其焦点是数据的内容,旨传输信息
- HTML被设计用来显示数据,其焦点是数据的外观,旨在显示信息
- XML不是HTML的替代,而是对HTML的补充。
- XML 是独立于软件和硬件的信息传输工具,也是各应用程序间传输数据最常用的工具。
下面是一个关于xml的joy写给ruby的便签:
<?xml version="1.0" encoding="ISO-8859-1"?><notice> <!--根标签开始--><!--子标签开始--><to>ruby</to><from>joy</from><heading>Inform</heading><body>have a meeting</body></notice> <!--跟标签结束-->
第一行是xml的声明,定义了xml的版本号和所使用的编码。下一行是一个根元素,根元素下面又嵌套了4个子元素(to,from,heading以及body),最后一行是根元素的结束,该xml文档包含了joy给ruby的通知条。
XML中的注释
XML中注释格式为:
<!--注释内容-->
XML元素
XML的元素是指从开始标签直到结束标签的部分(均包括开始结束)。
一个元素可以包含:
- 其他元素
- 文本
- 属性
- 或混合以上所有
XML语法规则
XML的语法规则很简单、易学,但是却很有逻辑。
- 所有XML元素都必须有一个关闭的标签
在XML中,省略关闭标签是非法的,所有元素都必须有关闭标签(除声明标签),这跟HTML有点差别,因为HTML中某些元素不必须有一个关闭标签。
<p> test test</p><br />
- XML标签对大小写敏感
因为XML对大小写敏感,所以必须使用相同大小写来编写打开标签和关闭标签,如:
<Note>this is a test1</Note><note>this is a test2</note>
上面实例中和是不一样的。
注意:打开标签和关闭标签也叫开始标签和结束标签,无论您喜欢哪种术语,它们的含义都是相同的。
- XML必须正确嵌套
在HTML中常可以不用正确嵌套元素,而在XML中,所有的元素都必须正确的嵌套,父元素就必须完全包住子元素。如:
<note><b>this is a test2</b></note>
- XML文档必须有根元素
XML文档必须有一个元素是所有其他元素的父元素,该元素称为根元素。如:
<note><b>this is a test2</b><name>joy</name></note>
上例中的就是根元素。
- XML属性值必须加引号
在XML中,元素的属性值是一个键值对形式(即 名称/值 对)。在XML中,属性值必须加引号。如:
<book category=" Python"><title>Learing Python</title><author>xxx</author><color>red</color></book>
book元素中的属性category的值Python必须用引号引起来,使用单引号和双引号都可以,但如果属性值本身包含双引号,就使用单引号;如果包含单引号,就使用双引号。如:
<gangster name='George "Shotgun" Ziegler'>
使用属性易引起的一些问题:
- 属性不能包含多个值(元素可以)
- 属性不能包含树结构(元素可以)
- 属性不容易扩展(不能拥抱未来的变化)
属性难以阅读和维护,所以尽量使用元素来描述数据,而仅仅使用属性来提供一些与数据无关的信息。
实体引用
XML中,一些字符拥有特殊意思,“<”表示新元素的开始,如果把该符号放到XML元素中,XML解析器就会把它当成新元素的开始,这样机会产生错误。如:
<title>Learing <Python </title>
为了避免这个错误,XML提供了实体引用来代替那些具有特殊意思的字符。XML中,拥有5个预定义的实体引用:
在XML中,只有字符“<”和“&”是非法的,其它都是合法的,但使用实体引用来代替是一个好习惯。如:
<b>12 > 10 </b>
注意:
在HTML中会把多个连续的空格字符合并为一个,而XML中,文档的空格不会被删减。
XML命名规则
XML元素必须遵循以下命名规则:
- 名称可以包含字母、数字以及其他字符
- 名称不能以数字或标点符号开头
- 名称不能以字母xml或XML开始
- 名称不能包含空格
- 可以使用任何名称,没有保留字
- 名称应该具有描述性,简短和简单,可以同时使用下划线。
- 避免“-”、“.”、“:”等字符。
CDATA
CDATA(Unparsed Character Data)指的是不应由XML解析器进行解析的文本数据。
因为XML解析器会将“<”(新元素的开始)和“&”(字符实体的开始)解析成具有特殊含义的字符,所以如果在文本中需要使用这些字符时,就必须使用实体引用去代替。但是有些文本,如JavaScript代码中会包含大量的“<”和“&”符号,这时我们可以将我们的脚本定义为CDATA来避免这个这个问题,因为CDATA部分中所有的内容都会被XML解析器忽略。
CDATA固定语法格式为:
<![CDATA["我们写的代码"]]>
如:
<script><![CDATA[function test(x, y){ if (x < 0 && y < 0) then { return 0; } else { return 1; }}]]></script>
上面是一段JavaScript代码,解析器会忽略CDATA部分中的所有内容。
注意:
CDATA部分不能包含字符串“]]>”(并且这字符串之间不能有空格或折行等字符),如果包含了,会以为是CDATA的结束。也不允许嵌套CDATA部分。
- python 文本解析 XML基础
- Python基础 xml解析
- 零基础学python-7.5 文本解析
- Python编程基础之十七XML解析
- python解析XML文件(基础)
- python基础-ElementTree、minidom解析xml
- python小例子之3 -- 解析xml文本
- 解析XML文本
- 解析xml文本
- php 解析xml文本
- 利用MSXML解析XML文本
- 利用MSXML解析XML文本
- 用python处理时间、utf8文本、正则匹配、序列化、目录路径搜索、xml解析
- 【脚本语言系列】关于Python文本解析XML,你需要知道的事
- xml解析基础01
- XML解析基础02
- xml基础--解析(DOM)
- xml基础--解析(SAX)
- hdu 1050 Asia 2001, Taejon (South Korea)
- CF 400 div2
- mybatis常用jdbcType数据类型
- 单词长度
- hdoj 5512 Pagodas 【gcd 思维】
- python 文本解析 XML基础
- [AHOI2006]文本编辑器editor BZOIJ 1269
- nyoj+排列使用了next_permutation函数
- 存储过程与PL/SQL基本用法
- 第一章初识R语言
- 远程推送/本地推送通知demo
- php 操作mongodb
- jsp 的四个作用域 :page、request、session和application的区别 .
- linux服务器信息查询