博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python 文本解析 XML基础
阅读量:4041 次
发布时间:2019-05-24

本文共 2427 字,大约阅读时间需要 8 分钟。

Python xml 基础

什么是xml?

  • XML指可扩展标记语言(Extensible Markup Language)
  • XML被设计用于结构化、存储 和传输数据
  • XML是一种标记语言,很类似于HTML
  • XML没有像HTML那样具有预定义标签,需要程序员自定义标签。
  • XML被设计为具有自我描述性,并且是W3C的标准

XML文档(树结构)

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

XML文档必须包含根元素,该元素是所有其他元素分父元素,文档中的所有元素形成了一棵文档树,这棵树从根开始,并扩展到树的最低端,并且所有的元素都可以有子元素:

....

父元素拥有子元素,相同层级上的子元素成为同胞(兄弟或姐妹)。

XML中所有元素都可以有文本内容和属性,类似于HTML。

XML和HTML之间的差异

  • XML被设计用于存储 和传输数据,其焦点是数据的内容,旨传输信息
  • HTML被设计用来显示数据,其焦点是数据的外观,旨在显示信息
  • XML不是HTML的替代,而是对HTML的补充。
  • XML 是独立于软件和硬件的信息传输工具,也是各应用程序间传输数据最常用的工具。

下面是一个关于xml的joy写给ruby的便签:

ruby
joy
Inform
have a meeting

第一行是xml的声明,定义了xml的版本号和所使用的编码。下一行是一个根元素,根元素下面又嵌套了4个子元素(to,from,heading以及body),最后一行是根元素的结束,该xml文档包含了joy给ruby的通知条。

XML中的注释

XML中注释格式为:

XML元素

XML的元素是指从开始标签直到结束标签的部分(均包括开始结束)。

一个元素可以包含:

  • 其他元素
  • 文本
  • 属性
  • 或混合以上所有

XML语法规则

XML的语法规则很简单、易学,但是却很有逻辑。

  • 所有XML元素都必须有一个关闭的标签
    在XML中,省略关闭标签是非法的,所有元素都必须有关闭标签(除声明标签),这跟HTML有点差别,因为HTML中某些元素不必须有一个关闭标签。

test test

  • XML标签对大小写敏感
    因为XML对大小写敏感,所以必须使用相同大小写来编写打开标签和关闭标签,如:
this is a test1
this is a test2

上面实例中和是不一样的。

注意:打开标签和关闭标签也叫开始标签和结束标签,无论您喜欢哪种术语,它们的含义都是相同的。

  • XML必须正确嵌套
    在HTML中常可以不用正确嵌套元素,而在XML中,所有的元素都必须正确的嵌套,父元素就必须完全包住子元素。如:
this is a test2
  • XML文档必须有根元素
    XML文档必须有一个元素是所有其他元素的父元素,该元素称为根元素。如:
this is a test2
joy

上例中的就是根元素。

  • XML属性值必须加引号
    在XML中,元素的属性值是一个键值对形式(即 名称/值 对)。在XML中,属性值必须加引号。如:
Learing Python
xxx
red

book元素中的属性category的值Python必须用引号引起来,使用单引号和双引号都可以,但如果属性值本身包含双引号,就使用单引号;如果包含单引号,就使用双引号。如:

使用属性易引起的一些问题:

  • 属性不能包含多个值(元素可以)
  • 属性不能包含树结构(元素可以)
  • 属性不容易扩展(不能拥抱未来的变化)

属性难以阅读和维护,所以尽量使用元素来描述数据,而仅仅使用属性来提供一些与数据无关的信息。

实体引用

XML中,一些字符拥有特殊意思,“<”表示新元素的开始,如果把该符号放到XML元素中,XML解析器就会把它当成新元素的开始,这样机会产生错误。如:

Learing <Python 

为了避免这个错误,XML提供了实体引用来代替那些具有特殊意思的字符。XML中,拥有5个预定义的实体引用:

1

在XML中,只有字符“<”和“&”是非法的,其它都是合法的,但使用实体引用来代替是一个好习惯。如:

12 > 10 

注意:

在HTML中会把多个连续的空格字符合并为一个,而XML中,文档的空格不会被删减。

XML命名规则

XML元素必须遵循以下命名规则:

  • 名称可以包含字母、数字以及其他字符
  • 名称不能以数字或标点符号开头
  • 名称不能以字母xml或XML开始
  • 名称不能包含空格
  • 可以使用任何名称,没有保留字
  • 名称应该具有描述性,简短和简单,可以同时使用下划线。
  • 避免“-”、“.”、“:”等字符。

CDATA

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

因为XML解析器会将“<”(新元素的开始)和“&”(字符实体的开始)解析成具有特殊含义的字符,所以如果在文本中需要使用这些字符时,就必须使用实体引用去代替。但是有些文本,如JavaScript代码中会包含大量的“<”和“&”符号,这时我们可以将我们的脚本定义为CDATA来避免这个这个问题,因为CDATA部分中所有的内容都会被XML解析器忽略。

CDATA固定语法格式为:

如:

上面是一段JavaScript代码,解析器会忽略CDATA部分中的所有内容。

注意:

CDATA部分不能包含字符串“]]>”(并且这字符串之间不能有空格或折行等字符),如果包含了,会以为是CDATA的结束。也不允许嵌套CDATA部分。

你可能感兴趣的文章
本地服务方式搭建etcd集群
查看>>
安装k8s Master高可用集群
查看>>
忽略图片透明区域的事件(Flex)
查看>>
忽略图片透明区域的事件(Flex)
查看>>
AS3 Flex基础知识100条
查看>>
Flex动态获取flash资源库文件
查看>>
flex4 中创建自定义弹出窗口
查看>>
01Java基础语法-15.for循环结构
查看>>
01Java基础语法-16. while循环结构
查看>>
01Java基础语法-18. 各种循环语句的区别和应用场景
查看>>
01Java基础语法-19. 循环跳转控制语句
查看>>
Django框架全面讲解 -- Form
查看>>
socket,accept函数解析
查看>>
今日互联网关注(写在清明节后):每天都有值得关注的大变化
查看>>
”舍得“大法:把自己的优点当缺点倒出去
查看>>
[今日关注]鼓吹“互联网泡沫,到底为了什么”
查看>>
[互联网学习]如何提高网站的GooglePR值
查看>>
[关注大学生]求职不可不知——怎样的大学生不受欢迎
查看>>
[关注大学生]读“贫困大学生的自白”
查看>>
[互联网关注]李开复教大学生回答如何学好编程
查看>>