xml writer

Alles rund um die Programmierung mit Qt
Haythem
Beiträge: 6
Registriert: 8. September 2005 14:26

xml writer

Beitrag von Haythem »

Hi ich möchte mit Qt eine XML Datei erzeugen, mit QDom sieht das jetzt so aus
<root>
.. <tag>
... <tag1>2.4 </tag1>
... <tag2>0.004</tag2>
.. </tag>
</root>

ich will es aber so :
<root>
.. <tag><tag1>2.4 </tag1><tag2>0.004</tag2></tag>
</root>

Wie kannich das haben? wie mahce ich das mit QDomListe?

Danke für jede Hilfe.
Zuletzt geändert von Haythem am 9. September 2005 15:28, insgesamt 1-mal geändert.
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

Mh, wo zum Teufel ist der Unterschied?
Goos
Beiträge: 360
Registriert: 17. August 2004 10:10
Wohnort: Black Forest

Beitrag von Goos »

FlorianBecker hat geschrieben:Mh, wo zum Teufel ist der Unterschied?
Na da erste ist schoen und das zweite eher haesslich und unlesbar :D

Goos
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

Dann entferne doch einfach alle NewLines aus dem Dokument. Das Dom selbst kann so was nicht. Macht ja eigentlich auch keinen wirklichen Sinn. Ließ die Datei mit einem XML Reader und das kann verspult sein ohne Ende, es wird eine klare Darstellung geben.
Haythem
Beiträge: 6
Registriert: 8. September 2005 14:26

Re: xml writer

Beitrag von Haythem »

Ich brauche die XML- Datei so dass die Daten in einer Zeile stehen ,mit 500 zeile und 4 Tags ist das besser lesbar.
Manchemal hast du nicht die Wahl.
Zuletzt geändert von Haythem am 8. September 2005 16:44, insgesamt 1-mal geändert.
Haythem
Beiträge: 6
Registriert: 8. September 2005 14:26

Beitrag von Haythem »

FlorianBecker hat geschrieben:Dann entferne doch einfach alle NewLines aus dem Dokument..
QDom stehlt automatisch eine Newline
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

Ja, dann bleibt dir nur die Lösung, dass du es erneut öffnest und so hin baust, wie du es brauchst und wieder zurückschreibst.
Haythem
Beiträge: 6
Registriert: 8. September 2005 14:26

Beitrag von Haythem »

Was soll ich öffnen und wie?
Ich erzeuge hier einen XML-writer, die Daten sind aus einer Datenbank
wenn du die xml datei selbst meinst dann will ich was anderes ausprobieren sonst muss ichviel tun, die Datei hat mehr als ich beschrieben habe.
Weist du ob es mit QDomListe geht ?
Zuletzt geändert von Haythem am 8. September 2005 16:49, insgesamt 1-mal geändert.
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

Dann ließt es halt in einen String und verbaust dort deine Eigenheiten. Deine Aussage von NewLine verstehe ich nicht. Sicherlich setzt QDom automatische NewLines, aber wer sagt, das man diese nicht entfernen könnte?
Haythem
Beiträge: 6
Registriert: 8. September 2005 14:26

Beitrag von Haythem »

Hat jemand einen Vorschlag?
lepsai
Beiträge: 573
Registriert: 14. September 2004 21:33
Wohnort: Berlin
Kontaktdaten:

Beitrag von lepsai »

Entferne die NewLines! Klarer kann man das wirklich nicht sagen...
Haythem
Beiträge: 6
Registriert: 8. September 2005 14:26

Beitrag von Haythem »

lepsai hat geschrieben:Entferne die NewLines! Klarer kann man das wirklich nicht sagen...
Wie es aussieht was für dich klar ist , ist es für mich nicht so.
Wie ich es am Anfang an geschrieben habe , ich benutze QDom, ich weiss nicht wie ich die Newline entfernen soll. QDom erzeugt mir die obere XML Form automatisch.
Also Welche Newline meinst du? :shock:
Hat jemand einen bsp. zur Erzeugung von XML Dateien per Hand (statt QDom), das bsp. aus Qt Webseite ist nicht das beste für mich.
lepsai
Beiträge: 573
Registriert: 14. September 2004 21:33
Wohnort: Berlin
Kontaktdaten:

Beitrag von lepsai »

Das hat doch nix mehr mit XML, QDom usw. zu tun. Du hast eine Text-Datei und moechtest die Newlines entfernen. Das wars.
kowi1134
Beiträge: 120
Registriert: 1. Mai 2005 17:48
Wohnort: Arnsberg

Beitrag von kowi1134 »

Hallo!

Ich fasse zusammen:

Offensichtlich möchtest Du das Layout Deiner XML Ausgabe verändern.

Die anderen Autoren haben vorgeschlagen, es bei dem Standard XML Layout, das QT produziert zu belassen.
Ihr Lösungsansatz ist, mit diesem Layout Deine Datenbankdaten in eine Datei zu schreiben, diese dann zu öffnen und alle Zeilenumbrüche mechanisch zu entfernen.

Dieser Ansatz mag zwar funktionieren, ist aber m.E. dennoch nicht gerade schick. Da ich mich nicht mit den XML Funktionen von QT auskenne, bin ich mir nicht sicher, ob ich Dir wirklich helfen kann, aber schau Dir doch mal die Funktion endElement() der Klasse QXmlContentHandler an. Diese Funktion ist rein virtuell und sie wird wie mir scheint nach jedem XML Element aufgerufen. Vielleicht bekommst Du hier eine Möglichkeit, in den Erzeugungsprozess des XML-Layouts einzugreifen, indem Du einen Zeilenumbruch unterdrückst o.ä..

Viel Glück!
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

Man kann den XML String auch direkt in einen QString lesen, muss also keine extra Datei dafür anlegen. Auch wenn man mit reimplementieren von Methoden diese Sache lösen könnte, würde ich einfach den ausgelesenen String verändern und dann so in die Datenbank zurück zuschreiben.
Antworten