How to extract xml attribute using Python ElementTree

前端 未结 4 727
一向
一向 2020-12-08 13:39

For:


 text

How do I get \"value\"?

xml.findtext(\"./bar[@key]         


        
相关标签:
4条回答
  • 2020-12-08 14:00

    Your expression:

    ./bar[@key]

    It means: bar children having key attribute

    If you want to select the attribute, use this relative expression:

    bar/@key
    

    It means: the key attribute of bar children

    Of course, you need to consider to use a fully compliant XPath engine like lxml.

    0 讨论(0)
  • 2020-12-08 14:01

    Getting child tag's attribute value in a XML using ElementTree

    Parse the XML file and get the root tag and then using [0] will give us first child tag. Similarly [1], [2] gives us subsequent child tags. After getting child tag use .attrib[attribute_name] to get value of that attribute.

    >>> import xml.etree.ElementTree as ET
    >>> xmlstr = '<foo><bar key="value">text</bar></foo>'
    >>> root = ET.fromstring(xmlstr)
    >>> root.tag
    'foo'
    >>> root[0].tag
    'bar'
    >>> root[0].attrib['key']
    'value'
    

    If the xml content is in file. You should do below task to get the root.

    >>> tree = ET.parse('file.xml')
    >>> root = tree.getroot()
    
    0 讨论(0)
  • 2020-12-08 14:05

    By following method you can get all attributes from xml (in Dictionary)

    import xml.etree.ElementTree as etree
    xmlString= "<feed xml:lang='en'><title>World Wide Web</title><subtitle lang='en'>Programming challenges</subtitle><link rel='alternate' type='text/html' href='http://google.com/'/><updated>2019-12-25T12:00:00</updated></feed>"
    xml= etree.fromstring(xmlString)  
    
    def get_attr(xml):
        attributes = []
        for child in (xml):
            if len(child.attrib)!= 0:
                attributes.append(child.attrib)
            get_attr(child)
        return attributes
    attributes = get_attr(xml)
    
    print(attributes)
    
    0 讨论(0)
  • 2020-12-08 14:15

    This will find the first instance of an element named bar and return the value of the attribute key.

    In [52]: import xml.etree.ElementTree as ET
    
    In [53]: xml=ET.fromstring(contents)
    
    In [54]: xml.find('./bar').attrib['key']
    Out[54]: 'value'
    
    0 讨论(0)
提交回复
热议问题