Linefeeds in XML mit BeautifulSoup

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
GMAch
User
Beiträge: 26
Registriert: Dienstag 4. September 2018, 07:32

Hallo ich probier gerade XML Dateien mit Python mittels BeautifulSoup einzulesen.

Dabei ist mit Aufgefallen, das die Linefeeds aus dem eingelesenen Textfile dabei als eigene Elemente erkannt werden.

Hier mal mein XML Bespiel

Code: Alles auswählen

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<a>
  <b>Hallo</b>
  <c>World</c>
</a>
Und mein Code:

Code: Alles auswählen

from bs4 import BeautifulSoup
input_file = 'Hello_World.dat'

f = open(input_file,'r') 

soup = BeautifulSoup(f, 'xml', from_encoding='utf-8')

f.close()

print(soup.a.contents)
Als Ausgabe krieg ich

Code: Alles auswählen

['\n', <b>Hallo</b>, '\n', <c>World</c>, '\n']
Sprich mit <a>-tag enthält auf einmal 5 Elemente anstelle von 2.

Mach ich irgendwas falsch oder ist das normal?
Muss ich da noch irgendeinen Parameter bei BeautifulSoup einstellen oder dem eingelesenen File noch irgendwas vor dem Umwandeln anstellen?

In der Dokumentation hab ich nichts dazu gefunden.
Sirius3
User
Beiträge: 17710
Registriert: Sonntag 21. Oktober 2012, 17:20

Und wo ist das Problem?
GMAch
User
Beiträge: 26
Registriert: Dienstag 4. September 2018, 07:32

Naja ich würde halt gerne wissen ob, dass mit den Linefeeds das normale Verhalten ist,.

Ich hab gerade erst angefangen mit XML zu beschäftigen und zusätzliche Elemente drin zu haben scheint bei der Navigation der Dateien (die etwas umfangreicher werden als das Beispiel oben) etwas unhandlich.
Sirius3
User
Beiträge: 17710
Registriert: Sonntag 21. Oktober 2012, 17:20

Man navigiert ja über die Tag-Namen, da stören zusätzliche Zeilenumbrüche nicht.
Antworten