From the XML document below:
<ns:getCommonNamesFromTSNResponse xmlns:ns="http://itis_service.itis.usgs.gov">
<ns:return xmlns:ax21="http://data.itis_service.itis.usgs.gov/xsd" xmlns:ax23="http://metadata.itis_service.itis.usgs.gov/xsd" xmlns:ax26="http://itis_service.itis.usgs.gov/xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ax21:SvcCommonNameList">
<ax21:tsn>183833</ax21:tsn>
<ax21:commonNames xsi:type="ax21:SvcCommonName">
<ax21:commonName>African hunting dog</ax21:commonName>
<ax21:language>English</ax21:language>
<ax21:tsn>183833</ax21:tsn></ax21:commonNames>
<ax21:commonNames xsi:type="ax21:SvcCommonName">
<ax21:commonName>African Wild Dog</ax21:commonName>
<ax21:language>English</ax21:language>
<ax21:tsn>183833</ax21:tsn></ax21:commonNames>
<ax21:commonNames xsi:type="ax21:SvcCommonName">
<ax21:commonName>Painted Hunting Dog</ax21:commonName>
<ax21:language>English</ax21:language>
<ax21:tsn>183833</ax21:tsn>
</ax21:commonNames>
</ns:return>
</ns:getCommonNamesFromTSNResponse>
I want to get all the values of the "commonName" and "language" elements, using Python lxml library.
I tried this code:
import lxml.etree as ET
tree = ET.parse("names.xml")
namespaces = {'ax21': 'http://data.itis_service.itis.usgs.gov/xsd'}
common_names = tree.findall(".//ax21:commonNames:ax21:commonName", namespaces)
langs = tree.findall(".//ax21:commonNames:ax21:language", namespaces)
but it returns just empty lists.
Any hints?