|
|
#pragma once
|
|
|
|
|
|
#include <QObject>
|
|
|
#include "Defines.h"
|
|
|
|
|
|
#include "IxSerDes.h"
|
|
|
#include "iXmlBase_global.h"
|
|
|
|
|
|
class QDomNode;
|
|
|
class QDomElement;
|
|
|
class QDomDocument;
|
|
|
class ZxSerializer;
|
|
|
|
|
|
// 单一节点
|
|
|
class I_XML_BASE_EXPORT iXmlItemBase : public QObject, \
|
|
|
virtual public IxSerDes
|
|
|
{
|
|
|
Q_OBJECT
|
|
|
|
|
|
public:
|
|
|
|
|
|
iXmlItemBase();
|
|
|
~iXmlItemBase();
|
|
|
|
|
|
protected:
|
|
|
|
|
|
// 初始化Tag
|
|
|
virtual void initXmlTags();
|
|
|
|
|
|
public:
|
|
|
|
|
|
// 解析xml节点到List
|
|
|
virtual void parseInfo(const QDomElement& e);
|
|
|
|
|
|
// 把List分配到成员变量
|
|
|
// 输入开始的m_listValues中index,并且返回下一个index
|
|
|
virtual int allocateInfo(int nIndex);
|
|
|
|
|
|
// 备份恢复
|
|
|
virtual bool saveBk();
|
|
|
virtual bool restoreBk();
|
|
|
|
|
|
// 序列化
|
|
|
virtual void onSerialize(ZxSerializer* ser);
|
|
|
virtual void onDeserialize(ZxSerializer* ser);
|
|
|
|
|
|
// 写入xml
|
|
|
virtual void writeInfo(QDomElement& e, QDomDocument &doc);
|
|
|
|
|
|
// 初始化孩子节点,对于组(父级)需要实现该函数
|
|
|
virtual iXmlItemBase* createChild();
|
|
|
|
|
|
// 节点层级关系
|
|
|
virtual void appenChild(iXmlItemBase* p);
|
|
|
iXmlItemBase* getChildAt(int n);
|
|
|
int getChildrenCount();
|
|
|
QStringList childrenNames();
|
|
|
int childIndex(QString sName);
|
|
|
void setParent(iXmlItemBase* p);
|
|
|
iXmlItemBase* getParent();
|
|
|
|
|
|
// clear
|
|
|
virtual void clear();
|
|
|
|
|
|
protected:
|
|
|
|
|
|
//主要检查是否数据
|
|
|
void checkStrToDigit(QString s, double& f);
|
|
|
void checkStrToDigit(QString s, int& n);
|
|
|
|
|
|
public:
|
|
|
|
|
|
QString m_sID; //ID
|
|
|
QString m_sName; //字段
|
|
|
QString m_sAlias; //别名
|
|
|
QString m_sTips; //说明/备注
|
|
|
|
|
|
QString m_sWhatThis;//辅助信息,可以是任意信息
|
|
|
|
|
|
protected:
|
|
|
|
|
|
// XML标签,需与成员变量严格对应
|
|
|
QStringList m_listTags;
|
|
|
|
|
|
// XML标签对应的数据,需与成员变量严格对应
|
|
|
QStringList m_listValues;
|
|
|
|
|
|
// 备份:XML标签对应的数据,需与成员变量严格对应
|
|
|
QStringList m_listValuesBk;
|
|
|
|
|
|
// 对于父子关系的处理
|
|
|
QVector<iXmlItemBase*> m_vecChildren;
|
|
|
iXmlItemBase* m_pParent;
|
|
|
|
|
|
// 临时,固定
|
|
|
QString m_sChildTag; //写入XML时,孩子节点标签
|
|
|
};
|
|
|
|
|
|
typedef QVector<iXmlItemBase*> vecXmlItemsPtr;
|