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
XML Problem
'Ich liebe es wenn ein Plan funktioniert'
-
- Python-Forum Veteran
- Beiträge: 2010
- Registriert: Freitag 11. Oktober 2002, 18:00
- Wohnort: Salzburg
- Kontaktdaten:
Hi Hanman,
mach erstmal eine xml-Datei daraus:
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:
Gruß
Dookie
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>
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]
import this[/code]
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
Gruß Hanman
'Ich liebe es wenn ein Plan funktioniert'
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)?Hanman hat geschrieben:Das XML Dokument ist schon wohlgeformt,
Joe
so ich hab jetzt mal geschaut und gemerkt das ich da noch ein > zuviel hatte!
geht jetzt alles danke
Gruß Hanman
geht jetzt alles danke
Gruß Hanman
'Ich liebe es wenn ein Plan funktioniert'
Die XML-Deklaration ist aber optional lt. Standard, kann also weggelassen werden.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!
fs111
Pydoc-Integration in vim - Feedback willkommen: http://www.vim.org/scripts/script.php?script_id=910