1

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!!

2
  • 2
    tree searches relative to the root-element. Use tree.xpath("user/metier"). Commented Oct 17, 2017 at 18:57
  • @Daniel thanks! I will put the answer if you let me Commented Oct 17, 2017 at 19:01

1 Answer 1

2

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)
Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.