void CKsParseCategory::InitCategroy(QString szFileName, QList<CKsModuleCategory*> &listCategory)
{
//clear current category list
qDeleteAll(listCategory);
listCategory.clear();
//load file "module.xml"
QFile file(szFileName);
QDomDocument domDocument;
QString errorStr;
int errorLine;
int errorColumn;
//设置QFile
if (!domDocument.setContent((QIODevice *)&file, true, &errorStr, &errorLine, &errorColumn))
{
return;
}
QDomElement root = domDocument.documentElement();
if (root.tagName() == "xml")
{
if (root.hasAttribute("version") && root.attribute("version") == "1.0")
{
QDomElement child = root.firstChildElement("category");
while (!child.isNull())
{
parseCategoryElement(child, listCategory);
child = child.nextSiblingElement("category");
}
}
}
}
#include <QDebug>
void CKsParseCategory::parseCategoryElement(const QDomElement &element,
QList<CKsModuleCategory *> &listCategory)
{
CKsModuleCategory *kscategory;
QString szCatename = element.attribute("name");
QString szTypeName = element.attribute("type");
QString szValue ,szDescrible;
kscategory = new CKsModuleCategory(szCatename);
if (kscategory == 0)
return;
szTypeName = szTypeName.trimmed();
QDomElement child = element.firstChildElement();
while (!child.isNull())
{
if (child.tagName() == "category")
{
parseCategoryElement(child,listCategory);
}
else
if (child.tagName() == "module")
{
szValue = child.attribute("modulename");
szDescrible = child.attribute("describe");
CKsModule *ksModule = new CKsModule(szValue, szTypeName, szDescrible);
if(szCatename == "I/O")//输入输出模块按xml文件标注的类型进行设置
{
// ksModule->SetModuleType(szCatename);
if (szTypeName == QString("IO"))
{
ksModule->SetType(CKsModule::E_IO);
}
else if (szTypeName == QString("SIGNLE") || szTypeName == QString(""))
{
//没设置,按单道集处理
ksModule->SetType(CKsModule::E_SINGLE);
}
else if (szTypeName == QString("MORE"))
{
ksModule->SetType(CKsModule::E_MORE);
}
}
else//输入输出模块外的所有模块设为CKsModule::E_SINGLE类型(目的:添加暂停标记)
{
ksModule->SetType(CKsModule::E_SINGLE);
}
kscategory->AddModule(ksModule);
}
child = child.nextSiblingElement();
}
listCategory.append(kscategory);
}