xml.dom.minidom.parse(xmlfile) Binding/Präfix

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
snoopy1234
User
Beiträge: 4
Registriert: Donnerstag 6. Dezember 2007, 09:12

Hallo zusammen,
ich habe folgendes Problem:
Ich muss eine xml Datei einlesen, diese verwendet Präfixe und löste diese nicht mit einem Namespace auf.

Dieses Beispiel funzt prima:

document1 = """
<products comment="funzt prima">
<Artikel></Artikel>
<Preis></Preis>
</products>
"""
document2 = """
<p:products comment="Fehler">
<Artikel></Artikel>
<Preis></Preis>
</p:products>
"""
try:
doc = minidom.parseString(document)
except expat.ExpatError, e:
raise XmlParserError('Error parsing XML file %s: %s: %s' % (CtiFileName, common.objRepr(e), ' '.join(e.args)))

Wie oder mit welcher Funktions kann ich das Document2 einlesen?
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

snoopy1234 hat geschrieben:Ich muss eine xml Datei einlesen, diese verwendet Präfixe und löste diese nicht mit einem Namespace auf.
Hallo snoopy1234!

Willkommen im Python-Forum!

BeautifulSoup http://www.crummy.com/software/BeautifulSoup/ kann mit Schrott-XML umgehen.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Nachtrag:

Code: Alles auswählen

>>> document2 = """
... <p:products comment="Fehler">
... <Artikel>aaa</Artikel>
... <Artikel>bbb</Artikel>
... <Preis><Artikel>ccc</Artikel></Preis>
... </p:products>
... """
>>> bs = BeautifulSoup.BeautifulSoup(document2)
>>> p = bs.find("p:products")
>>> p.findChildren("artikel", recursive = False)
[<artikel>aaa</artikel>, <artikel>bbb</artikel>]
>>> for artikel in p.findChildren("artikel", recursive = False):
...     artikel.string
...     
u'aaa'
u'bbb'
>>> 
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
snoopy1234
User
Beiträge: 4
Registriert: Donnerstag 6. Dezember 2007, 09:12

Hallo Gerold,
vielen Dank!
Es funktioniert :))))

Sag mal wie binde ich sauber BeautifulSoup in meine Application ein.
Ich habe die Skript-Dateie BeautifulSoup in mein App Verzeichnis kopiert und mit import BeautifulSoup eingebunden.

Soll man diese Plugins in einem Unterverzeichnis bereit stellen?

Wie würde man diese dann einbinden wenn das Unterverzeichnis Plugin hiese?

Wenn ich es in die IDE einbinden möchte muss ich es dann öffen?
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

snoopy1234 hat geschrieben:Ich habe die Skript-Dateie BeautifulSoup in mein App Verzeichnis kopiert
Hallo snoopy1234!

Einfach ins App-Verzeichnis. Das passt schon so.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
snoopy1234
User
Beiträge: 4
Registriert: Donnerstag 6. Dezember 2007, 09:12

Sorry,
wie kann ich auf ein Attribut eines Elemtes zugreifen?
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

snoopy1234 hat geschrieben:wie kann ich auf ein Attribut eines Elemtes zugreifen?

Code: Alles auswählen

artikel.get("id", None)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
snoopy1234
User
Beiträge: 4
Registriert: Donnerstag 6. Dezember 2007, 09:12

Danke funktioniert!
Antworten