XML Problem

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
Hanman
User
Beiträge: 48
Registriert: Mittwoch 31. März 2004, 12:24
Kontaktdaten:

Ich möchte von den beiden folgenden Elementen die einzelnen Argumente auslesen :
<pic id="1" by="Hanmam" tit="Fak"></pic>
<pic id="2" by="Hanmam" tit="Fakk"></pic>

Ich ahbe schon einen Code geschrieben, der das erste Elemnt bfasst, aber wenn dieses abgearbeitet ist gibt es eine Fehlermeldung :
Traceback (most recent call last):
File "C:/up/parser.py", line 11, in -toplevel-
parser.parse('links.xml')
File "C:\Python23\lib\xml\sax\expatreader.py", line 107, in parse
xmlreader.IncrementalParser.parse(self, source)
File "C:\Python23\lib\xml\sax\xmlreader.py", line 123, in parse
self.feed(buffer)
File "C:\Python23\lib\xml\sax\expatreader.py", line 211, in feed
self._err_handler.fatalError(exc)
File "C:\Python23\lib\xml\sax\handler.py", line 38, in fatalError
raise exception
SAXParseException: links.xml:2:0: junk after document element


Gibt es vielleicht eine Funktion, die alle Elemente "scanned"?

Gruß Hanman
'Ich liebe es wenn ein Plan funktioniert'
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Hi Hanman,

mach erstmal eine xml-Datei daraus:

Code: Alles auswählen

<?xml version="1.0"?>
<PicList>
	<pic id="1" by="Hanmam" tit="Fak"></pic>
	<pic id="2" by="Hanmam" tit="Fakk"></pic>
</PicList>
Erstmal kommt die Zeile, die eine xml-Datei definiert und dann müssen Elemente in der Datei immer in ein Element eingeschlossen sein!

Dann könntest Du mein Modul XML_Objects verwenden:

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: UTF-8 -*-

import sys

from XML_Objects import XML_Object, XML_Root


class Picture(XML_Object):
    __slots__ = {"id" : int, "by" : str, "tit" : str}
    xml_tag_name = "pic"

    def __init__(self, *args, **kw):
        super(Picture, self).__init__(*args, **kw)
        self.id = kw.pop("id", -1)
        self.by = kw.pop("by", "me")
        self.tit = kw.pop("tit", "")

class PicList(XML_Root):
    __slots__ = {}


if len(sys.argv) < 2:
    print "usage: sys.argv[0] <xml-file>"
    sys.exit(0)

my_pics =XML_Object.load(sys.argv[1])
for entry in my_pics.xml_get_children():
    print "id: %i, title: %s, by: %s" % (entry.id, entry.tit, entry.by)

Gruß

Dookie
Zuletzt geändert von Dookie am Dienstag 27. Juli 2004, 16:15, insgesamt 1-mal geändert.
[code]#!/usr/bin/env python
import this[/code]
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

HI. Meine Glaskugel ist heute nicht gut --- ich hab nur ein verschwommenes Bild davon, was gemacht wird... kannst du bitte ein wenig Code geben, wie dein Parser aussieht?
Hanman
User
Beiträge: 48
Registriert: Mittwoch 31. März 2004, 12:24
Kontaktdaten:

Das XML Dokument ist schon wohlgeformt, ich hab allerdings nur die 2 Zeilen code gepastet. Leidr werde ich dein Modul nicht nutzen können, da ich nicht denke, das mein Provider es mir installiert :(

Gruß Hanman
'Ich liebe es wenn ein Plan funktioniert'
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Hi Hanman,

das kannst auch selber installieren, braucht ja nur im Pythonpfad zu liegen oder im aktuellen Verzeichnis.


Gruß

Dookie
[code]#!/usr/bin/env python
import this[/code]
joe

Hanman hat geschrieben:Das XML Dokument ist schon wohlgeformt,
Hm, das ist erstaunlich. Die Fehlermeldung kann eigentlich nur kommen, wenn hinterm root-element noch was steht. Ist da vielleicht noch irgendein "verrücktes" unsichtbares zeichen (Steuerzeichen für irgenwas)?
Joe
Hanman
User
Beiträge: 48
Registriert: Mittwoch 31. März 2004, 12:24
Kontaktdaten:

so ich hab jetzt mal geschaut und gemerkt das ich da noch ein > zuviel hatte!

geht jetzt alles danke :)

Gruß Hanman
'Ich liebe es wenn ein Plan funktioniert'
fs111
User
Beiträge: 170
Registriert: Samstag 15. November 2003, 11:42
Kontaktdaten:

Dookie hat geschrieben:Hi Hanman,

Erstmal kommt die Zeile, die eine xml-Datei definiert und dann müssen Elemente in der Datei immer in ein Element eingeschlossen sein!
Die XML-Deklaration ist aber optional lt. Standard, kann also weggelassen werden.

fs111
Pydoc-Integration in vim - Feedback willkommen: http://www.vim.org/scripts/script.php?script_id=910
Antworten