XML-Datei mit Schema

Alles rund um die Programmierung mit Qt
Antworten
kp
Beiträge: 14
Registriert: 2. Mai 2007 10:17

XML-Datei mit Schema

Beitrag 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!
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

In der Doku von QDomDocument sind passende Beispiele...
kp
Beiträge: 14
Registriert: 2. Mai 2007 10:17

Beitrag 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!
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Mir gings um den 2. Teil, das hinzufügen von Elementen. Zu Schemas kann ich nichts sagen
kp
Beiträge: 14
Registriert: 2. Mai 2007 10:17

Beitrag von kp »

Das ist nur interessant wenn ich mit QDomDocument auch XML-Dateien erzeugen kann die ein Schema verwenden, aber erstmal Danke!
mim1711
Beiträge: 4
Registriert: 8. August 2007 12:47

Beitrag 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;
}
kp
Beiträge: 14
Registriert: 2. Mai 2007 10:17

Beitrag von kp »

Vielen Dank für Eure Info. Das Problem ist gelöst!
Antworten