python中的xml文件解析

2024-09-30 01:27:55 发布

您现在位置:Python中文网/ 问答频道 /正文

xml文件:

<global>
    <rtmp>
        <fcsapp>
            <password>
                <key>hello123</key>
                <key>check123</key>
            </password>
        </fcsapp>
    </rtmp>
</global>

python代码:获取所有键标记值。 你好123 支票123

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]

我怎样才能得到这个?你知道吗


Tags: keyinchildfortagpasswordxmlglobal
3条回答

使用可以按以下方式进行:

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']

使用lxmlcssselect我会这样做:

>>> 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                  ']

相关问题 更多 >

    热门问题