使用 XML 文件中的 Python,我只想获取具有值的标签? [关闭]

Posted

技术标签:

【中文标题】使用 XML 文件中的 Python,我只想获取具有值的标签? [关闭]【英文标题】:Using Python from a XML file ,I want to get only the tags that have a value? [closed] 【发布时间】:2020-05-16 00:14:06 【问题描述】:
        <?xml version='1.0' encoding='UTF-8'?>
            <results preview='0'>
            <meta>
                    <fieldOrder>
            <field>count</field>
               </fieldOrder>
            </meta>
        <result offset='0'>
            <field k='count'>
                <value><text>6</text></value>
            </field>
        </result>
    </results> 

从此 XML 中,我只想获取具有值的标签。即从这个xml我只想要'text'标签,'fields'标签。

【问题讨论】:

欢迎来到 ***。我很确定你可以用谷歌搜索这个,我敢肯定,如果你在这个网站上搜索,你会发现有人已经回答了你的问题。 【参考方案1】:

加载 xml,遍历它(例如递归),返回带有非空文本的标签。

这里作为生成器:

import xml.etree.ElementTree as ET

def getNonemptyTagsGenerator(xml):
    for elem in xml:
        yield from getNonemptyTagsGenerator(elem)
    if len(xml) == 0:
        if xml.text and xml.text.strip():
            yield xml

xml = ET.parse(file_path).getroot()
print([elem for elem in getNonemptyTagsGenerator(xml)])

结果:

[<Element 'field' at 0x7fb2c967fea8>, <Element 'text' at 0x7fb2c9679048>]

你说想要“标签”,所以这些是 Element 对象。

【讨论】:

当我在其他 xml 文件上使用它时出现错误:“'NoneType' 对象没有属性 'strip'”。 已修复。现在没有text var,我们首先检查xml.text 的存在,然后我们检查它是否仍然存在,当我们从它的末端去除空格时。

以上是关于使用 XML 文件中的 Python,我只想获取具有值的标签? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Python 对大 XML 文件执行查询?

使用 JAXB 获取 XML 子节点的值

如何从python中的文本文件中获取子字符串?

从 android 中的 XML 文件创建 View-Object

当我只想获取字典中的特定值时,如何解码字典值的 JSON 数组?

当我清楚地表明我只想完成第一个任务时,为什么所有任务都在asyncio.wait()中完成?