首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python中的xml文件解析

python中的xml文件解析
EN

Stack Overflow用户
提问于 2013-12-16 22:09:13
回答 4查看 127关注 0票数 2

xml文件:

代码语言:javascript
复制
<global>
    <rtmp>
        <fcsapp>
            <password>
                <key>hello123</key>
                <key>check123</key>
            </password>
        </fcsapp>
    </rtmp>
</global>

python代码:获取所有key标签值。hello123 check123

代码语言:javascript
复制
using xml.etree.ElementTree

for streams in xmlRoot.iter('global'):
    xpath = "/rtmp/fcsapp/password"
    tag = "key"
    for child in streams.findall(xpath):
        resultlist.append(child.find(tag).text)

    print resultlist

获得的输出是[hello123],但我希望它同时显示这两个输出([hello123, check123])

如何获取此信息?

EN

回答 4

Stack Overflow用户

发布于 2013-12-16 22:15:32

使用lxmlcssselect,我会这样做:

代码语言:javascript
复制
>>> from lxml.html import fromstring
>>> doc = fromstring(open("foo.xml", "r").read())
>>> doc.cssselect("password key")
[<Element key at 0x7f77a6786cb0>, <Element key at 0x7f77a6786d70>]
>>> [e.text for e in  doc.cssselect("password key")]
['hello123 \n                      ', 'check123 \n                  ']
票数 2
EN

Stack Overflow用户

发布于 2013-12-16 22:17:53

使用lxmlxpath,您可以通过以下方式完成此操作:

代码语言:javascript
复制
from lxml import etree

xml = """
<global>
    <rtmp>
        <fcsapp>
            <password>
                <key>hello123</key>
                <key>check123</key>
            </password>
        </fcsapp>
    </rtmp>
</global>
"""

tree = etree.fromstring(xml)
result = tree.xpath('//password/key/text()')
print result #  ['hello123', 'check123']
票数 2
EN

Stack Overflow用户

发布于 2013-12-16 22:17:51

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20612899

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档