Sto utilizzando la libreria lxml python per trasformare i file XML in un nuovo schema ma ho riscontrato problemi durante l'analisi delle istruzioni di elaborazione dal corpo XML.Rimozione delle istruzioni di elaborazione con Python lxml
Gli elementi di istruzioni di elaborazione sono sparsi in tutto il XML, come nel seguente esempio (tutti iniziano con "OASYS" e terminano con un codice univoco):
string = "<text><?oasys _dc21-?>Text <i>contents</i></text>"
non posso individuarli attraverso il metodo, anche se etree.getchildren()
li restituisce:
tree = lxml.etree.fromstring(string)
print tree.findall(".//")
>>>> [<Element i at 0x747c>]
print tree.getchildren()
>>>> [<?oasys _dc21-?>, <Element i at 0x747x>]
print tree.getchildren()[0].tag
>>>> <built-in function ProcessingInstruction>
print tree.getchildren()[0].tail
>>>> Text
c'è un'alternativa all'utilizzo getchildren()
per analizzare e rimuovere le istruzioni di elaborazione, soprattutto se si considera che stanno annidati a vari livelli thro ughout the XML?
hai effettivamente risolto due problemi con la vostra risposta - non sapevo circa le strip_tags() funzione, ma è molto utile! –