PyXml: Frage zur Namespace Erstellung in XML Files?

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
7crystal7
User
Beiträge: 46
Registriert: Freitag 26. Mai 2006, 18:50

Freitag 26. Mai 2006, 18:53

Hallo Leute,

ich erstelle mit pyxml ein DOM konformes XML File. Das Problem ist das meine xmlns Angaben sowie die erste Klammer <? .. encoding='UTF8'> usw. nur in einfachen Hochkommas sind, ich bräuchte diese aber unbedingt double quoted, also so "UTF8" .
Wisst ihr wie ich das anstelle?

Danke
Babsi
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Freitag 26. Mai 2006, 20:12

7crystal7 hat geschrieben:ich bräuchte diese aber unbedingt double quoted, also so "UTF8" .
Hi Babsi!

Ich würde mir da nicht zu viel antun und nach dem Erstellen des XML-Strings die Teile die mir nicht passen, einfach und schlicht ersetzen.

Code: Alles auswählen

mein_xmlstring.replace("encoding='UTF8'", 'encoding="UTF8"')
mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
7crystal7
User
Beiträge: 46
Registriert: Freitag 26. Mai 2006, 18:50

Freitag 26. Mai 2006, 20:26

hmm, das ist ne Möglichkeit, ich teste das mal!

Danke :-)
Gruß
Babsi
7crystal7
User
Beiträge: 46
Registriert: Freitag 26. Mai 2006, 18:50

Samstag 27. Mai 2006, 11:39

Hmm, das funktioniert leider nicht :-/

Die ersten beiden Zeilen im XML File müssen unbedingt so aussehen, ich bekomm das mit pyxml einfach nicht hin:

<?xml version="1.0" encoding="UTF-8"?>
<request xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNameSpaceSchemaLocation="Domain.xsd">

Wisst ihr weiter?

Danke
Babsi
murph
User
Beiträge: 622
Registriert: Freitag 14. April 2006, 19:23
Kontaktdaten:

Samstag 27. Mai 2006, 16:29

Das Problem scheint darin zuu liegen, dass für Python die gänsefüßchen gleich dem hochkomma sind; Python wandelt das ja acuh um!
Ich habe keine Idee außer einer anderen programmiersprache...oder vllt ein modul...
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Samstag 27. Mai 2006, 19:38

murph hat geschrieben:Ich habe keine Idee außer einer anderen programmiersprache...oder vllt ein modul...
Hi murph!

Darum kann man ja (') gegen (") tauschen und umgekehrt. Wir brauchen wegen so einer Lapalie doch keine andere Programmiersprache. Zur Not kann man die Strings ja sogar noch in (""") oder (''') einpacken.

Wenn dieser Befehl

Code: Alles auswählen

mein_xmlstring.replace("encoding='UTF8'", 'encoding="UTF8"')
nichtfunktionieren würde, dann würde doch keine Sau bei Python bleiben.

@Babsi: Mehr Infos; Mehr Code; Du scheiterst wahrscheinlich an etwas komplett Einfachen. Aber trotzdem: trau dich und zeig uns eine Fehlermeldung und ein wenig Code. Warum glaubst du, dass ein einfaches Replace nicht funktioniert? Vielleich ist der bessere Weg, einfach die ersten beiden Zeilen zu ersetzen... Aber genaueres, wenn wir mehr über dein Problem wissen.

lg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
murph
User
Beiträge: 622
Registriert: Freitag 14. April 2006, 19:23
Kontaktdaten:

Samstag 27. Mai 2006, 20:19

Nur mit drei gänsefüßchen oder hochkommas funktioniert das,
deine andere lösung, gerold, hatte wirklich nicht funktioniert, verscuhe es selber in der kommandozeile!
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Samstag 27. Mai 2006, 21:32

murph hat geschrieben:deine andere lösung, gerold, hatte wirklich nicht funktioniert, verscuhe es selber in der kommandozeile!
Mi murph!

Ich verstehe deine Aussage noch nicht ganz:

Code: Alles auswählen

>>> s = "<encoding='UTF8'>"
>>> s
"<encoding='UTF8'>"
>>> s.replace("'", '"')
'<encoding="UTF8">'
>>> s.replace("encoding='UTF8'", 'encoding="UTF8"')
'<encoding="UTF8">'
>>> 
Soeben ausprobiert --> mit PyShell.
Gleiches Ergebnis mit iPython. Und gleiches Ergebnis mit dem original Python 2.4.2-Interpreter.
System: Gentoo-Linux

...und gleiches Ergebnis mit dem original Python 2.4.1-Interpreter unter Windows 2000.

Zeig doch mal ein wenig Code.

lg
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:

Samstag 27. Mai 2006, 21:34

gerold hat geschrieben:Und gleiches Ergebnis mit dem original Python 2.4.2-Interpreter. System: Gentoo-Linux
Auch mit Python 2.3.5 unter Gentoo Linux bekomme ich das Ergebnis das ich erwartet habe.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
murph
User
Beiträge: 622
Registriert: Freitag 14. April 2006, 19:23
Kontaktdaten:

Samstag 27. Mai 2006, 21:38

:oops: ach, habe den Fehler gefunden :oops:

Code: Alles auswählen

>>> print s
<encoding='UTF8'>
>>> s.replace('"UTF-8"',"'UTF-8'")
"<encoding='UTF8'>"
>>> print s
<encoding='UTF8'>
:oops: :oops: :oops:
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Samstag 27. Mai 2006, 22:12

murph hat geschrieben:habe den Fehler gefunden
Hi murph!

Darauf möchte ich jetzt nicht herumreiten. :twisted:

lg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Antworten