Find all nodes by attribute in XML using Python 2

后端 未结 2 797
佛祖请我去吃肉
佛祖请我去吃肉 2021-01-13 20:26

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 additi

相关标签:
2条回答
  • 2021-01-13 20:29

    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>
        <child attr="test">1</child>
        <child attr="something else">2</child>
        <child other_attr="other">3</child>
        <child>4</child>
        <child attr="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']
    
    0 讨论(0)
  • 2021-01-13 20:42

    This is a good sample/start script using xpath :

    # -*- 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)
    
    0 讨论(0)
提交回复
热议问题