首先要清楚XML文件包含哪些元素:
他是由元素、文本或者两者混合物组成。元素可以拥有属性,元素是指从开始标签到结束标签的部分。
<?xml version="1.0" encoding="UTF-8" ?>
<books>
<book id="1001">
<name>面纱</name>
<info>请记住我,虽然再见必须说</info>
</book>
<book id="1002">
<name>人生第一次</name>
<info>愿他们、我们的一生平淡而有意义</info>
</book>
</books>
开始操作
1.在网上下载到tinnyxml的源码
2.导入tinyxml的头文件
#include "./TinyXML/tinyxml.h"
解析方法:
QString XMLreadwrite::parseIPAddress() const
{
QList<QString> nodeList;
nodeList.append("net");
nodeList.append("fix_ip");
QString attrText = "ip";
TiXmlNode *pNode = (TiXmlNode*)FindTextNode(nodeList);
QString data = ParseNodeData(pNode, attrText);
return data;
}
修改方法:
void XMLreadwrite::ModifyNodeData(TiXmlNode *pNode, QString text, QString data) const
{
for(pNode = pNode->FirstChild();
pNode;
pNode = pNode->NextSibling())
{
if(QString(QLatin1String(pNode->Value())) == text)
{
qDebug()<<"......."<<text<<data;
const char cData[1024] = {0};
memcpy((void*)cData,data.toStdString().c_str(),data.size());
//首先清除所有文本
pNode->Clear();
//然后插入文本
TiXmlText *pValue = new TiXmlText(cData);
pNode->LinkEndChild(pValue);
qDebug()<<"Modified successfully"<<QString(QLatin1String(pNode->ToElement()->GetText()));
}
}
}
解析例子:
QString XMLreadwrite::parseCodeFormat() const
{
QList<QString> nodeList;
nodeList.append("param_video");
QString attrText = "attr_format";
TiXmlNode *pNode = (TiXmlNode*)FindTextNode(nodeList);
QString nodeAttr = QString(QLatin1String(pNode->ToElement()->Attribute("name")));
QString data = "";
if(nodeAttr == "Visible")
{
data = ParseNodeData(pNode, attrText);
}
return data;
}
修改例子:
void XMLreadwrite::modifyCodeFormat(QString data)
{
QList<QString> nodeList;
nodeList.append("param_video");
QString attrText = "attr_format";
TiXmlNode *pNode = (TiXmlNode*)FindTextNode(nodeList);
QString nodeAttr = QString(QLatin1String(pNode->ToElement()->Attribute("name")));
if(nodeAttr == "Visible")
{
ModifyNodeData(pNode, attrText, data);
}
}