Come posso dire a ElementTree di ignorare gli spazi dei nomi in un file XML?Python: ignorando gli spazi dei nomi in xml.etree.ElementTree?
Ad esempio, preferirei interrogare modelVersion
(come nella dichiarazione 1) anziché {http://maven.apache.org/POM/4.0.0}modelVersion
(come nella dichiarazione 2).
pom="""
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
</project>
"""
from xml.etree import ElementTree
ElementTree.register_namespace("","http://maven.apache.org/POM/4.0.0")
root = ElementTree.fromstring(pom)
print 1,root.findall('modelVersion')
print 2,root.findall('{http://maven.apache.org/POM/4.0.0}modelVersion')
1 []
2 [<Element '{http://maven.apache.org/POM/4.0.0}modelVersion' at 0x1006bff10>]
AFAIK non c'è un modo facile + pulito per d o così, soprattutto se non si ha a che fare potenzialmente con più spazi dei nomi. Sembra che ci sia una domanda duplicata [qui] (http://stackoverflow.com/q/13412496/20670), ma non userò il mio dupehammer se dici che quegli approcci non funzioneranno per te (tipo di mi sembra un hacker sporco). –
Inoltre, ['lxml' potrebbe valere la pena di essere esaminato] (http://stackoverflow.com/q/14853243/20670), ma non fa parte della libreria standard. –
purtroppo sto inviando questo a qualcuno che non può installare lxml. Spero che la libreria standard lo incorpori un giorno. Ho pubblicato la mia attuale soluzione che mi rende molto triste coz una volta ho detto a mia madre che ero un programmatore professionista. : -/ –