Skip to content Skip to sidebar Skip to footer

Find All Nodes By Attribute In Xml Using Python 2

I have an XML file which has a lot of different nodes with the same attribute. I was wondering if it's possible to find all these nodes using Python and any additional package lik

Solution 1:

You can use built-in xml.etree.ElementTree module.

If you want all elements that have a particular attribute regardless of the attribute values, you can use an xpath expression:

//tag[@attr]

Or, if you care about values:

//tag[@attr="value"]

Example (using findall() method):

import xml.etree.ElementTree as ET

data = """
<parent><childattr="test">1</child><childattr="something else">2</child><childother_attr="other">3</child><child>4</child><childattr="test">5</child></parent>
"""

parent = ET.fromstring(data)
print [child.text for child in parent.findall('.//child[@attr]')]
print [child.text for child in parent.findall('.//child[@attr="test"]')]

Prints:

['1', '2', '5']['1', '5']

Solution 2:

This is a good sample/start script using :

# -*- coding: utf-8 -*-from lxml import etree
fp = open("xml.xml")
tree = etree.parse(fp)
for el in tree.findall('//node[@attr="something"]'):
    print(el.text)

Post a Comment for "Find All Nodes By Attribute In Xml Using Python 2"