Python解析xml找出同目录标签

什么是 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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章