Created
March 20, 2012 10:11
-
-
Save lamprosg/2133804 to your computer and use it in GitHub Desktop.
Writing and reading XML files with Qt - qxmlstreamwriter and qxmlstreamreader provided classes
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//Writing and reading XML files with Qt - qxmlstreamwriter and qxmlstreamreader supported classes | |
void MyXMLClass::SaveXMLFile() | |
{ | |
QString filename = QFileDialog::getSaveFileName(this, | |
tr("Save Xml"), ".", | |
tr("Xml files (*.xml)")); | |
QFile file(filename); | |
file.open(QIODevice::WriteOnly); | |
QXmlStreamWriter xmlWriter(&file); | |
xmlWriter.setAutoFormatting(true); | |
xmlWriter.writeStartDocument(); | |
xmlWriter.writeStartElement("LAMPS"); | |
xmlWriter.writeStartElement("LIGHT1"); | |
xmlWriter.writeTextElement("State", "statevalue" ); | |
xmlWriter.writeTextElement("Room", "roomvalue"); | |
xmlWriter.writeTextElement("Potencial", "potencialvalue"); | |
xmlWriter.writeEndElement(); | |
file.close(); | |
} | |
void MyXMLClass::ReadXMLFile() | |
{ | |
QXmlStreamReader Rxml; | |
QString filename = QFileDialog::getOpenFileName(this, | |
tr("Open Xml"), ".", | |
tr("Xml files (*.xml)")); | |
QFile file(filename); | |
if (!file.open(QFile::ReadOnly | QFile::Text)) | |
{ | |
std::cerr << "Error: Cannot read file " << qPrintable(filename) | |
<< ": " << qPrintable(file.errorString()) | |
<< std::endl; | |
} | |
Rxml.setDevice(&file); | |
Rxml.readNext(); | |
while(!Rxml.atEnd()) | |
{ | |
if(Rxml.isStartElement()) | |
{ | |
if(Rxml.name() == "LAMPS") | |
{ | |
READNEXT(); | |
} | |
else if(Rxml.name() == "LIGHT1") | |
{ | |
while(!Rxml.atEnd()) | |
{ | |
if(Rxml.isEndElement()) | |
{ | |
READNEXT(); | |
break; | |
} | |
else if(Rxml.isCharacters()) | |
{ | |
READNEXT(); | |
} | |
else if(Rxml.isStartElement()) | |
{ | |
if(Rxml.name() == "State") | |
{ | |
ReadStateElement(); | |
} | |
else if(Rxml.name() == "Room") | |
{ | |
ReadRoomElement(); | |
} | |
else if(Rxml.name() == "Potencial") | |
{ | |
ReadPotencialElement(); | |
} | |
READNEXT(); | |
} | |
else | |
{ | |
READNEXT(); | |
} | |
} | |
} | |
} | |
else | |
{ | |
READNEXT(); | |
} | |
file.close(); | |
if (Rxml.hasError()) | |
{ | |
std::cerr << "Error: Failed to parse file " | |
<< qPrintable(filename) << ": " | |
<< qPrintable(Rxml.errorString()) << std::endl; | |
} | |
else if (file.error() != QFile::NoError) | |
{ | |
std::cerr << "Error: Cannot read file " << qPrintable(filename) | |
<< ": " << qPrintable(file.errorString()) | |
<< std::endl; | |
} | |
} | |
//Example for Room Element | |
void MyXMLClass::ReadRoomElement() | |
{ | |
while(!Rxml.atEnd()) | |
{ | |
if(Rxml.isEndElement()) | |
{ | |
READNEXT(); | |
break; | |
} | |
else if(Rxml.isStartElement()) | |
{ | |
QString roomelement = Rxml.readElementText(); //Get the xml value | |
READNEXT(); | |
break; | |
} | |
else if(Rxml.isCharacters()) | |
{ | |
READNEXT(); | |
} | |
else | |
{ | |
READNEXT(); | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0"?> | |
<LAMPS> | |
<LIGHT1> | |
<State>statevalue</State> | |
<Room>roomvalue</Room> | |
<Potencial>potencialvalue</Potencial> | |
</LIGHT1> | |
</LAMPS> |
Thanks !
what is the correct way to write these ?
ReadStateElement()
ReadRoomElement()
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
what that fuck