如何在Python中获取XML标记值

kal*_*cey 10 python xml parsing dom xml-parsing

我在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>
Run Code Online (Sandbox Code Playgroud)

如何使用Python 提取6in <value><text>6</text></value>

Col*_*lau 17

使用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
Run Code Online (Sandbox Code Playgroud)

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

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]
Run Code Online (Sandbox Code Playgroud)

  • +1 [lxml比BeautifulSoup快得多](http://blog.dispatched.ch/2010/08/16/beautifulsoup-vs-lxml-performance/)。 (3认同)

Thi*_*yen 6

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

并假设您已阅读介绍,然后只需使用:

soup = BeautifulSoup('your_XML_string')
print soup.find('text').string
Run Code Online (Sandbox Code Playgroud)

  • 我已经忘记了 BeautifulSoup!不知道它可以解析 XML。实际上,我查看了他们的文档,然后您通过添加一个额外的 'xml' 参数来解析 xml,即`soup = BeautifulSoup('your_XML_string', 'xml')` (2认同)