Parafrasando il codice, la versione di ElementTree.py
io uso contiene quanto segue in un metodo _write
:
write('<' + tagname)
...
if node.text or len(node): # this line is literal
write('>')
...
write('</%s>' % tagname)
else:
write(' />')
per guidare il contatore di programma che ho creato il seguente:
class AlwaysTrueString(str):
def __nonzero__(self): return True
true_empty_string = AlwaysTrueString()
Poi ho impostato node.text = true_empty_string
su quei nodi ElementTree dove voglio un tag open-close piuttosto che un self-closing.
"governando il contatore del programma" intendo la costruzione di un insieme di input, in questo caso un oggetto con un test di verità piuttosto curioso, a un metodo di libreria tale che l'invocazione del metodo di libreria attraversa il suo diagramma di flusso di controllo nel modo Lo voglio Questo è ridicolmente fragile: in una nuova versione della libreria, il mio hack potrebbe rompersi, e probabilmente dovresti trattare "potrebbe" come "quasi garantito". In generale, non rompere le barriere di astrazione. Ha funzionato solo per me qui.
fonte
2015-06-04 16:07:34
Sfortunatamente, non c'è altro parser Fortran XML da utilizzare, quindi questa è la nostra unica opzione. Grazie! – tpg2114
Qualche possibilità esiste un modo per mantenere il caso del tag? Apparentemente anche la distinzione tra maiuscole e minuscole è un problema e 'html' non conserva il caso ... – tpg2114
@ tpg2114: no, scusa. –