Seite 1 von 2

xml writer

Verfasst: 8. September 2005 15:19
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.

Verfasst: 8. September 2005 15:23
von FlorianBecker
Mh, wo zum Teufel ist der Unterschied?

Verfasst: 8. September 2005 16:22
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

Verfasst: 8. September 2005 16:25
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.

Re: xml writer

Verfasst: 8. September 2005 16:41
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.

Verfasst: 8. September 2005 16:42
von Haythem
FlorianBecker hat geschrieben:Dann entferne doch einfach alle NewLines aus dem Dokument..
QDom stehlt automatisch eine Newline

Verfasst: 8. September 2005 16:43
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.

Verfasst: 8. September 2005 16:45
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 ?

Verfasst: 8. September 2005 16:48
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?

Verfasst: 8. September 2005 17:43
von Haythem
Hat jemand einen Vorschlag?

Verfasst: 8. September 2005 21:46
von lepsai
Entferne die NewLines! Klarer kann man das wirklich nicht sagen...

Verfasst: 9. September 2005 15:18
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.

Verfasst: 9. September 2005 15:36
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.

Verfasst: 11. September 2005 14:09
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!

Verfasst: 11. September 2005 17:23
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.