2013-10-10 6 views
5

Come eseguire una query utilizzando xpath ignorando lo spazio dei nomi xml? Sto usando la libreria lxml di Python. Ho provato la soluzione dalla domanda this ma non sembra funzionare.Spazi dei nomi jolly in lxml

In [151]: e.find("./*[local-name()='Buckets']") 
    File "<string>", line unknown 
SyntaxError: invalid predicate 

risposta

5

Use e.xpath, not e.find:


import lxml.etree as ET 

content = '''\ 
<Envelope xmlns="http://www.example.com/zzz/yyy"> 
    <Header> 
    <Version>1</Version> 
    </Header> 
    <Buckets> 
    some stuff 
    </Buckets> 
</Envelope> 
''' 
root = ET.fromstring(content) 
print(root.xpath("./*[local-name()='Buckets']")) 
# [<Element {http://www.example.com/zzz/yyy}Buckets at 0xb73a62ac>]