Qt 中sax方式 解析 xml文件
2014-02-11 13:15
429 查看
1 bool CSFCfgFileBase::LoadConfigFile( const QString &strCfgFile )
{
if( strCfgFile != "" )
{
m_strConfigFileName = strCfgFile;
}
QFile file(m_strConfigFileName);
if (!file.open(QFile::ReadOnly | QFile::Text))
{
return false;
}
file.seek( 0 );
QXmlInputSource xmlInputSource(&file);
QXmlSimpleReader reader;
reader.setContentHandler(this);
reader.setErrorHandler(this);
bool bResult = reader.parse( xmlInputSource );
file.close();
if( bResult )
{
InitAllFeatures();
m_bCfgLoaded = true;
}
return m_bCfgLoaded;
}
2.bool CSFCfgFileValueExchange::startElement(const QString& namespaceURI, const QString& localName, const QString& qName, const QXmlAttributes& atts)
{
if( m_eCurrentRoute == XRT_FEATURE && m_slParseRoute.size() == XRL_FEATURE )
{
if( qName == "ValueExchange" )
{
m_eCurrentRoute = XRT_FEATURE_VALUEEXCHANGE;
}
else
{
return CSFCfgFileClass::startElement( namespaceURI, localName, qName, atts );
}
}
else if( m_eCurrentRoute == XRT_FEATURE_VALUEEXCHANGE && m_slParseRoute.size() == XRL_FEATURE_VALUEEXCHANGE )
{
if( qName == "ITEM" )
{
CSFCfgParserValueExchange::DS_ValueExchangeItem dsItem;
CSFCfgParserValueExchange::LoadValueExchangeItem( atts, &dsItem );
GetCfgValueExchangesPtr()->push_back( dsItem );
}
else
{
}
}
else
{
return CSFCfgFileClass::startElement( namespaceURI, localName, qName, atts );
}
m_slParseRoute.append( qName );
return true;
}
3.bool CSFCfgFileValueExchange::endElement(const QString& namespaceURI, const QString& localName, const QString& qName)
{
if( m_slParseRoute.size() == XRL_FEATURE_VALUEEXCHANGE && m_eCurrentRoute == XRT_FEATURE_VALUEEXCHANGE && qName == "ValueExchange" )
{
m_eCurrentRoute = XRT_FEATURE;
}
else
{
return CSFCfgFileClass::endElement( namespaceURI, localName, qName );
}
m_slParseRoute.removeLast();
return true;
}
相关文章推荐
- Qt多线程概述
- Qt之2D绘图
- windows下用QTwebkit解析html实现过程
- Qt写Activex插件 总结
- AQtime未响应或不能启动的问题
- 基于QT简单的开关按钮--自绘控件
- Qt翻译及发布管理器:lupdate和lrelease
- qt中文乱码问题
- qt 实现单例
- Pyqt4 360界面风格皮肤实现
- 树莓派上qt creator出现路径问题‘no target path set’
- Qt学习之路(1):前言
- QTP10-插件破解脚本
- QTP之对测试用例的自动化过程的分解
- 关于QTP
- Qt模块化笔记之core——使用QJsonDocument输出JSON数据
- QTextStream格式带中文对齐输出问题
- Qt QWidget::paintEngine: Should no longer be called 错误的解决办法
- PyQt4中无边框窗口的移动(拖动)
- Windows下,Qt激活指定句柄的窗口