Ich versuche, mehrere element.text auf eine XML-Datei troncate. Es gelingt mir, zwei Listen zu erhalten, die erste gruppiert die Former zu lang element.text als str (long_name) und die zweite gruppiert die gleiche nach einer troncation (short_name).Wie ersetzt man einen Text in XML durch lxml?
Nun ich die element.text auf meiner xml ersetzen will, habe ich versucht, ein Skript, aber ich surrended mit der Funktion readlines() zu arbeiten, ich mag eine ähnliche Lösung mit lxml wie dieser Code zu finden:
txt = open('IF_Generic.arxml','r')
Lines = txt.readlines()
txt.close()
txt = open('IF_Genericnew.arxml','w')
for e in range(len(long_name)) :
for i in range(len(Lines)) :
if (long_name[e] in Lines[i]) == True :
Lines[i] = Lines[i].replace(long_name[e],short_name[e])
for i in Lines :
txt.write(i)
txt.close()
ich versuchte dies, aber es funktioniert nicht:
f = open('IF_Generic.arxml')
arxml = f.read()
f.close()
tree = etree.parse(StringIO(arxml))
for e,b in enumerate(long_name) :
context = etree.iterparse(StringIO(arxml))
for a,i in context:
if not i.text:
pass
else:
if (b in i.text) == True :
i.text = short_name[e]
obj_arxml = etree.tostring(tree,pretty_print=True)
f = open('IF_Genericnew.arxml','w')
f.write(obj_arxml)
f.close()
ist das erste Element der Liste long_name ist RoutineServices_EngMGslLim_NVMID03
<BALISE_A>
<BALISE_B>
<SHORT-NAME>RoutineServices_EngMGslLim_NVMID03</SHORT-NAME>
</BALISE_B>
</BALISE_A>
<BALISE_C>
<POSSIBLE-ERROR-REF DEST="APPLICATION-ERROR">/Interfaces/RoutineServices_EngMGslLim_NVMID03/E_NOT_OK</POSSIBLE-ERROR-REF>
<SHORT-NAME>Blah_Bleh_Bluh</SHORT-NAME>
</BALISE_C>
Lassen sie sagen,
Das erste Element der Liste short_name ist RoutineServices_EngMGslLim_NV
<BALISE_A>
<BALISE_B>
<SHORT-NAME>RoutineServices_EngMGslLim_NV</SHORT-NAME>
</BALISE_B>
</BALISE_A>
<BALISE_C>
<POSSIBLE-ERROR-REF DEST="APPLICATION-ERROR">/Interfaces/RoutineServices_EngMGslLim_NV/E_NOT_OK</POSSIBLE-ERROR-REF>
<SHORT-NAME>Blah_Bleh_Bluh</SHORT-NAME>
</BALISE_C>
ich dieses
P.S will: Ich Python 2.7.9
Vielen Dank im Voraus jedem benutzen!
@mzjn Um zu vereinfachen, werden wir sagen, dass ich 2 Listen habe, ich möchte alle Element.text in meinem XML durchsuchen und ersetzen. Die Liste long_name ist das Kriterium, um zu wissen, ob ich den Text ersetzen muss oder nicht, und die Liste short_name ist der neue Text, den ich einfügen möchte. Ich kann dir die XML-Datei nicht geben, weil es wie 500k Zeilen ist. – Noxos
@mzjn Ich habe versucht, so minimal wie möglich zu sein – Noxos