Seite 1 von 1
Nutzung der DOM - Api
Verfasst: 14. Dezember 2007 14:12
von Qt_Starter
Hallo,
nachdem ich jetzt fast alles, was der Qt - Assistant zum Dom - Api dokumentiert, ausprobiert habe, schaffe ich es dennoch nicht meine Elemente richtig anzusprechen
folgendes Beispiel:
Code: Alles auswählen
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<root>
<book name="MissionToFix">
<title name="buffer">heap</title>
<title name="MSC">4</title>
</book>
<book name="FirstRoot">
<title name="Magic">3</title>
<title name="version">12</title>
</book>
</root>
Wie kann man mit der DOM - Api auf eines der Bezeichnungen hinter "name" zugreifen? (Beispiel: name = "MissionToFix")
Freue mich über jeden Hinweis!
Verfasst: 14. Dezember 2007 14:16
von VuuRWerK
Hast Dir wirklich alles angeschaut? Wenn ja, dann nicht richtig. Zudem würdest Du vielleicht darauf kommen das es sich bei "name" in einem tag um ein Attribut handelt, das setzt aber auch vorraus das Du Dich mit XML auskennst!
http://doc.trolltech.com/4.3/qdomattr.html
Gut Schuß
VuuRWerK

@VuuRWerK
Verfasst: 14. Dezember 2007 14:29
von Qt_Starter
Ich habs mir eigentlich angeschaut und auch schon angeschaut, aber es funktioniert leider nicht.
Hast du ein Codebeispiel für diese XML - Datei?
Hier mein Code:
Code: Alles auswählen
.
.
.
QCoreApplication a(argc, argv);
QFile file("index.xml");
if (!file.open(QIODevice::ReadOnly))
return 1;
QByteArray content = file.readAll();
QString StrContent = QString::QString(content);
QString errorMessage;
int line, col;
QDomDocument doc;
if(!doc.setContent(StrContent, false, &errorMessage, &line, &col))
{
cout << "Error in Line " << line << ", Column " << col << ":" << qPrintable(errorMessage) << endl;
return 1;
}
file.close();
QDomElement DomElem;
DomElem = doc.documentElement();
QDomNode FirstChildNode = DomElem.firstChild();
QString FirstNodeName;
FirstNodeName = FirstChildNode.nodeName(); //book
QDomAttr MyAttrFirst = FirstChildNode.toAttr();
QString testValue;
testValue = MyAttrFirst.name(); //leer
testValue = MyAttrFirst.value(); //leer
.
.
.
Verfasst: 14. Dezember 2007 14:39
von Volker
Code: Alles auswählen
QDomElement element = ...;
QString value = element.attribute("name");
@Volker
Verfasst: 14. Dezember 2007 15:11
von Qt_Starter
So klappt es leider auch nicht, das ist ja auch das Beispiel aus der Doku.

Verfasst: 14. Dezember 2007 15:46
von Volker
Code: Alles auswählen
QCoreApplication a(argc, argv);
QFile file("index.xml");
if (!file.open(QIODevice::ReadOnly))
return 1;
QString errorMessage;
int line, col;
QDomDocument doc;
if(!doc.setContent(&file, &errorMessage, &line, &col))
{
cout << "Error in Line " << line << ", Column " << col << ":" << qPrintable(errorMessage) << endl;
return 1;
}
file.close();
QDomElement DomElem;
DomElem = doc.documentElement();
QDomElement FirstChildNode = DomElem.firstChildElement();
QString FirstNodeName;
FirstNodeName = FirstChildNode.nodeName(); //book
QString name = FirstChildNode.attribute("name");
Versuch's mal so (ungetestet)
@Volker
Verfasst: 14. Dezember 2007 16:16
von Qt_Starter
Vielen Dank, jetzt klappt es
