【问题标题】:Using Python from a XML file ,I want to get only the tags that have a value? [closed]使用 XML 文件中的 Python,我只想获取具有值的标签? [关闭]
【发布时间】: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'标签。

【问题讨论】:

  • 欢迎来到 StackOverflow。我很确定你可以用谷歌搜索这个,我敢肯定,如果你在这个网站上搜索,你会发现有人已经回答了你的问题。

标签: python python-3.x xml parsing xml-parsing


【解决方案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 的存在,然后我们检查它是否仍然存在,当我们从它的末端去除空格时。
猜你喜欢
  • 1970-01-01
  • 2014-02-23
  • 2012-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多