pythonlxml循环遍历所有标记

2024-10-01 09:29:50 发布

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

我有一个dict映射每个xml标记到一个dict键。我想遍历xml中的每个标记和文本字段,并将其与关联的dict key值进行比较,后者是另一个dict中的键

<2gMessage>
    <Request>
        <pid>daemon</pid>
        <emf>123456</emf>
        <SENum>2041788209</SENum>
        <MM>
            <MID>jbr1</MID>
            <URL>http://jimsjumbojoint.com</URL>
        </MM>
        <AppID>reddit</AppID>
        <CCS>
            <Mode>
                <SomeDate>true</CardPresent>
                <Recurring>false</Recurring>
            </Mode>
            <Date>
                <ASCII>B4788250000028291^RRR^15121015432112345601</ASCII>
            </Date>
            <Amount>100.00</Amount>
        </CCS>
    </Request>
</2gMessage>

到目前为止我掌握的代码是:

^{pr2}$

但是,这只打印请求的直接子级的标记,如果它是同一个循环中的实例,我希望能够访问子级上的子级。我不想硬编码值,因为标签和结构可能会改变。在


Tags: 标记urlmoderequestxmlpiddictappid
1条回答
网友
1楼 · 发布于 2024-10-01 09:29:50

您可以尝试使用iter()函数。它将遍历所有子元素。比较长度是为了只打印那些没有子对象的:

像这样的完整脚本:

from lxml import etree
tree = etree.parse('xmlfile')
for tag in tree.iter():
    if not len(tag):
        print (tag.tag, tag.text)

产量:

^{2}$

相关问题 更多 >