首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python按路径获取xml元素

python按路径获取xml元素
EN

Stack Overflow用户
提问于 2019-10-30 08:50:36
回答 1查看 243关注 0票数 0

我试图遍历一个大型xml文件,并收集一些数据。由于可以通过路径找到数据的位置,所以我使用了xpath,但没有结果。

有人能告诉我我做错了什么吗?

xml示例:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<rootnode>
    <subnode1>

    </subnode1>
    <subnode2>

    </subnode2>
    <subnode3>
        <listnode>
            <item id="1"><name>test name1</name></item>
            <item id="2"><name>test name2</name></item>
            <item id="3"><name>test name3</name></item>
        </listnode>
    </subnode3>
</rootnode>

守则:

代码语言:javascript
复制
import lxml.etree as ET

tree = ET.parse('temp/temp.xml')

subtree = tree.xpath('./rootnode/subnode3/listnode')

for next_item in subtree:
    Id = next_item.attrib.get('id')
    name = next_item.find('name').text
    print('{:>20} - {:>20}'.format(name,Id))
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-30 08:58:01

你们很亲密。

Ex:

代码语言:javascript
复制
import lxml.etree as ET

tree = ET.parse('temp/temp.xml')

subtree = tree.xpath('/rootnode/subnode3/listnode')
for next_item in subtree:
    for item in next_item.findall('item'):
        Id = item.attrib.get('id')
        name = item.find('name').text
        print('{:>20} - {:>20}'.format(name,Id))

代码语言:javascript
复制
subtree = tree.xpath('/rootnode/subnode3/listnode/item')
for item in subtree:
    Id = item.attrib.get('id')
    name = item.find('name').text
    print('{:>20} - {:>20}'.format(name,Id))  

输出:

代码语言:javascript
复制
  test name1 -                    1
  test name2 -                    2
  test name3 -                    3
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58621542

复制
相关文章

相似问题

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