Domanda

Sto usando la libreria cElementTree per analizzare i file XML in Python. Tutto sta funzionando benissimo

Ma vorrei fornire messaggi di errore completo per l'utente quando un valore nel XML non è corretto.

Per esempio, supponiamo che ho il seguente codice XML:

<A name="xxxx" href="yyyy"/>

e vuole dire all'utente se l'attributo href non esiste o avere un valore che non è in una data lista.

Per il momento, ho qualcosa di simile

if elem.get("ref") not in myList:
    raise XMLException( elem, "the 'href' attribute is not valid or does not exist")

dove la mia eccezione e 'colto da qualche parte.

Ma, in aggiunta, vorrei visualizzare il numero di riga dell'elemento XML nel file. Sembra che il cElementTree non memorizza alcuna informazione circa i numeri di riga degli elementi XML dell'albero ...: - (

Domanda: C'è una libreria XML equivalente che è in grado di farlo? O un modo per avere accesso al posto di un elemento XML nel file XML?

Grazie

È stato utile?

Soluzione

La libreria equivalente che si dovrebbe utilizzare è lxml . lxml è un wrapper su molto veloce librerie C libxml2 e libxslt ed è generalmente considerato superiore alla costruito in quelli.

E, per fortuna, cerca di mantenere alle API elemento albero ed estenderlo in lxml.etree.

lxml.etree ha un sourceline attributo per tutti gli elementi che è proprio quello che cercate.

Così elem.sourceline sopra nel messaggio di errore dovrebbe funzionare.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top