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!
XML-Datei mit Schema
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;
}
<?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;
}