生成示例
<?xml version="1.0" encoding="UTF-8"?>
<sdk guid="##GUID">
<in method="SetModbusParaInfo">
<Device name="Device1">
<mode updateCycUnit="ms" timeOutUnit="ms" resendTimes="3" timeOut="0" updateCyc="100" deviceId="1" value="2"/>
<eth netmask="255.255.255.0" ip="192.168.90.245" port="10000"/>
<serial serial="COM1" dataBits="8" baudRate="9600" parity="NONE" stopBit="1"/>
<register offset="1" func="0" name="Para0" dataFormat="0"/>
<register offset="1" func="0" name="Para1" dataFormat="0"/>
</Device>
</in>
</sdk>
头文件
#ifndef MANAGETREEXML_H
#define MANAGETREEXML_H
#include <QTreeWidget>
#include <QDomDocument>
typedef struct RegisterPara {
RegisterPara() {
func_ = "0";
offset_ = "1";
dataFormat_ = "0";
}
QString func_;
QString offset_;
QString dataFormat_;
}RegisterPara;
Q_DECLARE_METATYPE(RegisterPara)
typedef struct DevicePara {
DevicePara() {
mode_ = "0";
deviceId_ = "1";
updateCyc_ = "100";
updateCycUnit_ = "ms";
timeOut_ = "0";
timeOutUnit_ = "ms";
resendTimes_ = "3";
serial_ = "COM1";
baudRate_ = "9600";
dataBits_ = "8";
stopBit_ = "1";
parity_ = "NONE";
ipAddress_ = "192.168.90.245";
netmask_ = "255.255.255.0";
port_ = "10000";
}
QString mode_;
QString deviceId_;
QString updateCyc_;
QString updateCycUnit_;
QString timeOut_;
QString timeOutUnit_;
QString resendTimes_;
QString serial_;
QString baudRate_;
QString dataBits_;
QString stopBit_;
QString parity_;
QString ipAddress_;
QString netmask_;
QString port_;
QHash<QString, RegisterPara*> registerPara_;
}DevicePara;
Q_DECLARE_METATYPE(DevicePara)
enum ItemType {
DeviceEnum = QTreeWidgetItem::UserType,
RegisterEnum
};
class ManageTreeXml
{
public:
ManageTreeXml();
bool SaveTreeXml(QTreeWidget* pTree, QString xmlPath);
bool LoadTreeXml(QTreeWidget* pTree, QString xmlPath);
private:
bool showXml(QTreeWidget* pTree, QDomDocument *pDoc, bool bEditable);
bool showXmlTreeNode(QTreeWidget* pTree, QDomNode domParent, QTreeWidgetItem *treeParent, bool bEditable);
void setTreeNodeText(QDomNode Node, QTreeWidgetItem *treeNode, DevicePara* devicePara);
void SaveItem(QDomElement& root,QTreeWidgetItem* item,QDomDocument& doc);
};
#endif // MANAGETREEXML_H
源文件
#include "manageTreexml.h"
#include <QStack>
#include <QFile>
#include <QDebug>
ManageTreeXml::ManageTreeXml()
{
}
bool ManageTreeXml::SaveTreeXml(QTreeWidget *pTree, QString xmlPath)
{
QDomDocument doc;
QDomProcessingInstruction head = doc.createProcessingInstruction("xml", "version=\"1.0\" encoding=\"UTF-8\"");
doc.appendChild(head);
QTreeWidgetItem *rootItem = pTree->