我的xml文件如下所示:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<title>myproj</title>
<note>some note</note>
<!-- our entry -->
<entry>
<desc>Camera Position</desc>
<identifier>f_f</identifier>
<type>CameraExtrinsics</type>
<typeentry>
<member>pos_x</member>
<value>-861</value>
</typeentry>
<typeentry>
<member>pos_y</member>
<value>0</value>
</typeentry>
</entry>
</configuration>
如何使用Qt将成员pos_x
(来自-861
)的值修改为所需的值(假设为50)。目标是,最后,如果我使用文本编辑器打开我的xml文件,我会看到pos_x的值为50。
目前我想出了解析文件的代码,但我不知道如何更进一步
QFile* xmlFile = new QFile("file.xml");
if (!xmlFile->open(QIODevice::ReadOnly | QIODevice::Text))
{
std::cout << " opening xml file failed " << std::endl;
}
QXmlStreamReader* xmlReader = new QXmlStreamReader(xmlFile);
(我使用的是qt 4.8,如果可能,请避免使用c ++ 11或更高版本)
编辑文档以添加新节点或修改值是完全相同的:
#include <QXmlStreamReader>
#include <QXmlStreamWriter>
#include <QFile>
#include <QDomElement>
#include <QDomDocument>
#include <QDomText>
#include <QTextStream>
#include <QDebug>
int main()
{
QDomDocument document;
QString const content("<root><foo><bar>spam</bar></foo></root>")
if (!document.setContent(content, false))
{
qDebug() << "failed to parse file";
return 0;
}
QDomElement docEle = document.documentElement(); // get root node
QDomElement foo = docEle.firstChildElement("foo"); // get foo node inside the root
QDomElement bar = foo.firstChildElement("bar"); // get the bar node inside foo
QDomNode txt = bar.firstChild(); // get the current text
QDomNode newTxt = document.createTextNode("Booh!"); // create a new text node
bar.replaceChild(newTxt, txt); // replace the current text node by the new text
qDebug() << document.toString();
return 0;
}