Parafrazując kodu wersja ElementTree.py
używam zawiera następujące składniki w _write
metody:
write('<' + tagname)
...
if node.text or len(node): # this line is literal
write('>')
...
write('</%s>' % tagname)
else:
write(' />')
sterować licznik programu stworzyłem następujące:
class AlwaysTrueString(str):
def __nonzero__(self): return True
true_empty_string = AlwaysTrueString()
Potem ustawić node.text = true_empty_string
na tych węzłach ElementTree, w których chcę utworzyć tag zamykający, a nie samozamykający.
Przez "sterowanie licznikiem programu" rozumiem skonstruowanie zbioru danych wejściowych - w tym przypadku obiektu o nieco dziwnym teście prawdy - do metody biblioteki tak, że wywołanie metody biblioteki przebiega przez jej wykres przepływu kontrolnego w sposób Chcę tego. To jest absurdalnie kruche: w nowej wersji biblioteki moje włamanie może się zepsuć - powinieneś traktować "moc" jako "prawie gwarantowaną". Ogólnie rzecz biorąc, nie przełamuj barier abstrakcji. Dla mnie to po prostu zadziałało.
Niestety, nie ma innego parsera Fortran XML do użycia, więc jest to nasza jedyna opcja. Dzięki! – tpg2114
Czy istnieje szansa na zachowanie przypadku tagu? Wygląda na to, że rozróżnianie wielkości liter jest również problemem, a 'html' nie zachowuje przypadku ... – tpg2114
@ tpg2114: nie, przepraszam. –