什么是 XML?
XML 指可扩展标记语言(eXtensible Markup Language)。 你可以通过本站学习 XML 教程
XML 被设计用来传输和存储数据。
XML 是一套定义语义标记的规则,这些标记将文档分成许多部件并对这些部件加以标识。
它也是元标记语言,即定义了用于定义其他与特定领域有关的、语义的、结构化的标记语言的句法语言。
Python 对 XML 的解析
常见的 XML 编程接口有 DOM 和 SAX,这两种接口处理 XML 文件的方式不同,当然使用场合也不同。
Python 有三种方法解析 XML,SAX,DOM,以及 ElementTree:
1.SAX (simple API for XML )
Python 标准库包含 SAX 解析器,SAX 用事件驱动模型,通过在解析XML的过程中触发一个个的事件并调用用户定义的回调函数来处理XML文件。
2.DOM(Document Object Model)
将 XML 数据在内存中解析成一个树,通过对树的操作来操作XML。
3.ElementTree(元素树)
ElementTree就像一个轻量级的DOM,具有方便友好的API。代码可用性好,速度快,消耗内存少。
注:因DOM需要将XML数据映射到内存中的树,一是比较慢,二是比较耗内存,而SAX流式读取XML文件,比较快,占用内存少,但需要用户实现回调函数(handler)
本部分通过使用Dom方法,在不影响运行的情况下,通过标签内容获取该标签目录下的兄弟节点。
通过标签sentence中的内容获取到对应的value值。
首先,我们需要通过sentence标签,获取到其对应的内容,
解析整个xml文件,获取根节点;
document_tree = xml.dom.minidom.parse('sentencetype.xml')
root = document_tree.documentElement
获取每一个part组,并分别进行遍历;
parts = root.getElementsByTagName("part")
for part in parts:
通过sentence标签,获取该标签对应的内容值;
sententce = part.getElementsByTagName('sentence')[0]
pips = sententce.childNodes[0].data
判断获取到的内容值是否满足条件,满足条件则将对应的兄弟标签取出来;
if pips。。。。:
values = part.getElementsByTagName('value')[0]
value = values.childNodes[0].data
整体的代码如下所示:
def question(questions):
#解析xml文件
document_tree = xml.dom.minidom.parse('sentencetype.xml')
root = document_tree.documentElement
zhi = ''
#获取每组part
parts = root.getElementsByTagName("part")
#遍历part
for part in parts:
#获取sentence对应的值
sententce = part.getElementsByTagName('sentence')[0]
pips = sententce.childNodes[0].data
#获取sentence同目录下的其他标签值
values = part.getElementsByTagName('value')[0]
value = values.childNodes[0].data
#判断是否标签值满足条件
if pips in questions:
zhi = value
break
#返回满足的兄弟标签值
return zhi