Mehrzeiligen Text mit Leerzeichen aus einer XML ausgeben mit Python?

1 Antwort

Ich habe es einmal gegengeprüft.

data.xml (UTF-8 kodiert):

<?xml version="1.0" encoding="utf-8"?>
<roottest xsi:noNamespaceSchemaLocation="test.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<messages>Das ist die erste Zeile,
das wäre die zweite Zeile.
Das wäre die dritte Zeile</messages>
</roottest>

main.py (Python 3.10):

import xml.etree.ElementTree as ET

tree = ET.parse('data.xml')
root = tree.getroot()

elements = root.findall("./messages")
elem_counter = 0

for elem in elements:
  print("text=" + elem.text + '\n')
  elem_counter += 1

Ausgabe:

text=Das ist die erste Zeile,
das wäre die zweite Zeile.
Das wäre die dritte Zeile

Das klappt also schon. Prüfe vielleicht noch einmal deine Zeichenkodierung für die XML-Datei und lass dir den Text einmal so wie ich auf der Konsole ausgeben.

wuestenblume14 
Fragesteller
 02.06.2022, 09:16

hi, danke erstmals für deine Antwort.

Ich habe es auch nochmal getestet, und das funktioniert bei mir nicht :/

Meine XML ist wie deine, utf-8 kodiert, das sagt auch Notepad++

0
wuestenblume14 
Fragesteller
 02.06.2022, 09:43

Ich habe das wie von dir Vorgeschlagen, nochmal getestet. Den Text mit print über die Konsole ausgeben zu lassen funktioniert. Ich will diesen Text allerdings in einer Datei ausgeben. Also mit

with open(ausgabe.txt, w) as out_file:

for elem in root.findall("./messages"):                                

               out_file.write("text=" + elem.text + '\n')

      elem_counter +=1

in der ausgabe.txt soll dann stehen

text=Das ist die erste Zeile,

das wäre die zweite Zeile.

Das wäre die dritte Zeile

0
regex9  02.06.2022, 11:42
@wuestenblume14

Das klappt genauso:

with open("ausgabe.txt", "w") as writer:
  for elem in elements:
    writer.write("text=" + elem.text + "\n")
    elem_counter += 1
0