Per impostazione predefinita, quando si chiama ElementTree.parse (someXMLfile) i prefissi libreria Python elementtree ogni nodo analizzato con esso di namespace URI in notazione di Clark:Alter spazio dei nomi anteponendo ElementTree in Python
{http://example.org/namespace/spec}mynode
Questo rende l'accesso nodi specifici per nome un enorme dolore più avanti nel codice.
Ho letto i documenti su ElementTree e namespace e sembra che la funzione iterparse()
mi consenta di modificare il modo in cui il parser prefissa i namespace, ma per la vita di me non riesco a farlo cambiare il prefisso . Sembra che possono accadere in background prima che l'evento ns-start anche incendi come in questo esempio:
for event, elem in iterparse(source):
if event == "start-ns":
namespaces.append(elem)
elif event == "end-ns":
namespaces.pop()
else:
...
Come faccio a farlo modificare il comportamento prefisso di e qual è la cosa giusta per tornare quando finisce di funzione ?
interessante. Mi piacerebbe saperlo anche io. Il mio modo di procedere consiste nel creare "costante" XHTML_NS = '{http://www.w3.org/1999/xhtml}' e quindi utilizzare nel codice XHTML_NS + "mynode" – karlcow
Puoi spiegare cosa stai effettivamente cercando di ottenere ? Perché la notazione di Clark è un dolore enorme? –
Sto cercando di integrare con il codice esistente che accede alle cose con il loro prefisso originale (cioè 'openSearch', piuttosto che' {http://a9.com/-/spec/opensearchrss/1.0/} ') e speravo c'era un modo più carino di costruire il tipo di mappa dei prefissi che @karlcow menziona. –