Pro文件
QT += xml
需要的头文件
#include <QXmlStreamReader>
#include <QXmlStreamWriter>
#include <QFile>
#include <QFileDialog>
解析XML数据
void MainWindow::fromXml()
{
QString filename = QFileDialog::getOpenFileName(this, " 打开XML数据", "./", "Xml文件 (*.xml)");
if(filename.isEmpty())
return;
QFile file(filename);
if(file.open(QIODevice::ReadOnly | QIODevice::Text))
{
QXmlStreamReader reader(&file);
while(!reader.atEnd() && !reader.hasError())
{
QXmlStreamReader::TokenType token = reader.readNext();
if(token == QXmlStreamReader::StartDocument)
{
QString documentNode = reader.text().toString();
ui->content_txt->append(documentNode);
}
if(reader.isStartElement())
{
QString elementNode = reader.name().toString();
ui->content_txt->append(elementNode);
QXmlStreamAttributes attributes = reader.attributes();
foreach(QXmlStreamAttribute attr , attributes)
{
qDebug()<<" ("<<attr.name()<<"="<<attr.value()<<") ";
ui->content_txt->append(" ("+attr.name()+"="+attr.value()+") ");
}
qDebug()<<" ("<<reader.text().toString()<<") ";
ui->content_txt->append(" ("+reader.text().toString()+") ");
}
}
if(reader.hasError())
{
qDebug()<<"reader error"<<reader.errorString();
}
reader.clear();
file.close();
}
}
转为XML数据
<?xml version="1.0" encoding="UTF-8"?>
<Project>
<Data Address="302">
<Message Content="Data.Message">
<!--hello world-->
<Details>hello world!</Details>
</Message>
</Data>
<Data Address="302">
<Message Content="DataMessage">
<!--hello world-->
</Message>
</Data>
</Project>
void MainWindow::toXml()
{
QString filename = QFileDialog::getSaveFileName(this, "保存XML数据", "test.xml", "Xml文件 (*.xml)");
if(filename.isEmpty())
return;
QFile file(filename);
if(file.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Truncate))
{
QXmlStreamWriter writer(&file);
writer.setAutoFormatting(true);
writer.writeStartDocument();
writer.writeStartElement("Project");
writer.writeStartElement("Data");
writer.writeAttribute("Address", "302");
writer.writeStartElement("Message");
writer.writeAttribute("Content", "Data.Message");
writer.writeComment("hello world");
writer.writeTextElement("Details","hello world!");
writer.writeEndElement();
writer.writeEndElement();
writer.writeStartElement("Data");
writer.writeAttribute("Address", "302");
writer.writeStartElement("Message");
writer.writeAttribute("Content", "DataMessage");
writer.writeComment("hello world");
writer.writeEndElement();
writer.writeEndElement();
writer.writeEndElement();
writer.writeEndDocument();
file.close();
}
}