Jeanne
Jeanne

Reputation: 1331

Parse an xml file with python

Hese is the file the file.xml file xml file link

<?xml version="1.0" encoding="UTF-8"?>
<users>
    <user data-id="101">
        <nom>Zorro</nom>
        <metier>Danseur</metier>
    </user>
    <user data-id="102">
        <nom>Hulk</nom>
        <metier>Footballeur</metier>
    </user>
    <user data-id="103">
        <nom>Zidane</nom>
        <metier>Star</metier>
    </user>
    <user data-id="104">
        <nom>Beans</nom>
        <metier>Epicier</metier>
    </user>
    <user data-id="105">
        <nom>Batman</nom>
        <metier>Veterinaire</metier>
    </user>
    <user data-id="106">
        <nom>Spiderman</nom>
        <metier>Veterinaire</metier>
    </user>
</users>

for example: I want to show the metier for each user

from lxml import etree

tree = etree.parse("file.xml")
for metier in tree.xpath("/users/user/metier"):
    print(metier.text)

The script is run without problem but it shows nothing. It seems like tree.xpath("/users/user/metier") is empty!!

Upvotes: 1

Views: 85

Answers (1)

Daniel
Daniel

Reputation: 42748

tree.xpath searches relative to the root-element <users>. So users must not be part of the path:

from lxml import etree

tree = etree.parse("file.xml")
for metier in tree.xpath("user/metier"):
    print(metier.text)

Upvotes: 2

Related Questions