如何在 Python 中获取 XML 标记值

Posted

技术标签:

【中文标题】如何在 Python 中获取 XML 标记值【英文标题】:How to get XML tag value in Python 【发布时间】:2012-07-06 06:17:21 【问题描述】:

我在 Python 中的 unicode-string 变量中有一些 XML,如下所示:

<?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>

如何使用 Python 提取 &lt;value&gt;&lt;text&gt;6&lt;/text&gt;&lt;/value&gt; 中的 6

【问题讨论】:

另见***.com/q/1912434/425313。 如何从结果标签中获取值 preview='0'? 【参考方案1】:

使用 lxml:

import lxml.etree
# xmlstr is your xml in a string
root = lxml.etree.fromstring(xmlstr)
textelem = root.find('result/field/value/text')
print textelem.text

编辑:但我想可能会有不止一个结果...

import lxml.etree
# xmlstr is your xml in a string
root = lxml.etree.fromstring(xmlstr)
results = root.findall('result')
textnumbers = [r.find('field/value/text').text for r in results]

【讨论】:

+1 lxml is much faster than BeautifulSoup. @bgtlrs,BS 4 比大多数其他解析器更喜欢 lxml。所以这一点没有实际意义,但我更喜欢 lxml API。 是的,我已经切换到 lxml 有一段时间了:D【参考方案2】:

BeautifulSoup 是据我所知解析 XML 的最简单方法...

并假设您已经阅读了介绍,那么只需简单地使用:

soup = BeautifulSoup('your_XML_string')
print soup.find('text').string

【讨论】:

这只会找到第一个&lt;text&gt;元素,不管位置。 我忘记了 BeautifulSoup!不知道它可以解析 XML。实际上,我查看了他们的文档,您通过添加一个额外的“xml”参数来解析 xml,即soup = BeautifulSoup('your_XML_string', 'xml')

以上是关于如何在 Python 中获取 XML 标记值的主要内容,如果未能解决你的问题,请参考以下文章

如何在 SQL 语句中获取 XML 值?

如何使用 bs4 或 lxml 在 Python 中找到 XML 标记的文本行?

如何在python中根据xml标签获取文本?

如何使用Jdom获取特定标记值

如何从 PHP 中的以下 SOAP XML 响应中获取 pinBlocked 标记

如何在已解析的 XML 标记值上检查 Null