Seite 1 von 1
XML-Datei mit Schema
Verfasst: 8. August 2007 13:52
von kp
wie kann ich mit Qt eine xml-datei generieren, die eine Schema-Datei verwendet und am Anfang wie folgt aussieht:
<?xml version="1.0" encoding="UTF-8"?>
<ProductList xmlns="
http://www.company.com"
xmlns:xsi="
http://www.w3.org/2001/10/XMLSchema-instance"
xsi:schemaLocation="ProductList.xsd">
<Meta>
...
Mit Welchen Klassen und Methoden lassen sich weitere XML-elemente hinzufügen, so dass die xml-datei etwa wie folgt aussieht?
<element1>Wert1</element1>
<element2>
<element3>Wert3</element3>
</element2>
etc.
Vielen Dank im Voraus für Tips und Beispiele!
Verfasst: 8. August 2007 13:56
von upsala
In der Doku von QDomDocument sind passende Beispiele...
Verfasst: 8. August 2007 14:04
von kp
QDomDocument erzeugt mir aber eine xml-Datei der Form:
<!DOCTYPE name>
<ProductList/>
Das möchte ich aber nicht, sondern die genannte Form beginnend mit <?xml...
Darüber hinaus wird in der Doku nichts von Schema-Verwendung gesagt!
Verfasst: 8. August 2007 14:05
von upsala
Mir gings um den 2. Teil, das hinzufügen von Elementen. Zu Schemas kann ich nichts sagen
Verfasst: 8. August 2007 14:08
von kp
Das ist nur interessant wenn ich mit QDomDocument auch XML-Dateien erzeugen kann die ein Schema verwenden, aber erstmal Danke!
Verfasst: 9. August 2007 16:23
von mim1711
Ich hab mir erstmal ein XML Template erstellt, das von der Struktur her so aussieht wie gewünscht:
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<MASAlarmConfig xmlns="mas_alarm.xsd" version="1.0.0">
<system_error_cmd/>
<global_rufnummernliste/>
<global_cmd/>
<hash/>
<machine name="" address="" check_at="* *">
<request_error_file/>
<std_cmd/>
<inputfile/>
<poll_sekunden/>
<aktionen>
<aktion valid="1" >
</aktion>
</aktionen>
</machine>
</MASAlarmConfig>
Diese Datei lese ich in ein QDomDocument ein und übernehme dann die Werte in ein QTreeWidget. In meiner Anwendung kann ich dann neue Elemente in das QTreeWidget einfügen.
Das Ganze schreibe ich dann zurück mit
bool CMASAlarmConfigTree::write(QIODevice *device)
{
const int IndentSize = 4;
QTextStream out(device);
domDocument.save(out, IndentSize);
return true;
}
Verfasst: 9. August 2007 16:59
von kp
Vielen Dank für Eure Info. Das Problem ist gelöst!