MFC对话框上数据的存取(.xml)

MFC对话框上数据的存取(.xml),第1张

MFC对话框上数据的存取(.xml)

查看已经保存的.xml文件:用记事本打开。

bool CZWMateralCreateDlg::SaveDataToXML()  ///CZWMateralCreateDlg类名
{
	Zwc::ZXml xml;
	pugi::xml_parse_result result = xml.loadFile(Z_SP::FP::DlgDefault());///DlgDefault为.xml文件名

	if (result.status == pugi::status_file_not_found)
		Zwc::ZXmlHelper::AppendDeclarationNode(xml);
	else if (result.status != pugi::status_ok)
		return FALSE;

	pugi::xml_node root = Zwc::ZXmlHelper::GetFirstOrCreateChild(xml.root(), _T("xmlRoot"));
	if (root.empty())
		return FALSE;

	pugi::xml_node materalCreateDlgNode = Zwc::ZXmlHelper::GetFirstOrCreateChild(root, _T("MateralCreateDlg"));///MateralCreateDlg、materalCreateDlgNode
	if (materalCreateDlgNode.empty())
		return FALSE;
	///上面的几乎不需要修改
	bool bIsCreateExcelTable = ((CButton*)GetDlgItem(IDC_CHECK_ZW_MATERIAL_CREATE_EXCEL))->GetCheck();///获取CheckBox的选中状态
	Zwc::ZXmlHelper::GetFirstOrCreateAttribute(materalCreateDlgNode, _T("IsCreateExcelTable")).set_value(bIsCreateExcelTable);///保存一条名为IsCreateExcelTable的记录
	CString strExcleTemplatePath;
	GetDlgItem(IDC_EDIT_ZW_MATERIAL_EXCEL_TEMPLATE)->GetWindowText(strExcleTemplatePath);
	///获取Edit Control的文本、IDC_EDIT_ZW_MATERIAL_EXCEL_TEMPLATE为Edit Control的ID
	Zwc::ZXmlHelper::GetFirstOrCreateAttribute(materalCreateDlgNode, _T("ExcleTemplatePath")).set_value(strExcleTemplatePath);
	CString strSaveExcleFilePath;
	GetDlgItem(IDC_EDIT_ZW_MATERIAL_EXCEL_FILE)->GetWindowText(strSaveExcleFilePath);
	Zwc::ZXmlHelper::GetFirstOrCreateAttribute(materalCreateDlgNode, _T("SaveExcleFilePath")).set_value(strSaveExcleFilePath);

	bool m_bIsAppendToTableHeader = ((CButton*)GetDlgItem(IDC_CHECK_ZW_MATERIAL_ATTACH_TABLE_HEADER))->GetCheck();
	Zwc::ZXmlHelper::GetFirstOrCreateAttribute(materalCreateDlgNode, _T("IsAppendToTableHeader")).set_value(m_bIsAppendToTableHeader);
	bool m_bIsAppendToTableFooter = ((CButton*)GetDlgItem(IDC_CHECK_ZW_MATERIAL_ATTACH_TABLE_FOOTER))->GetCheck();
	Zwc::ZXmlHelper::GetFirstOrCreateAttribute(materalCreateDlgNode, _T("IsAppendToTableFooter")).set_value(m_bIsAppendToTableFooter);
	bool m_bIsRemoveBothEndEmptyList = ((CButton*)GetDlgItem(IDC_CHECK_ZW_MATERIAL_REMOVE_BOTH_END_EMPTY_LIST))->GetCheck();
	Zwc::ZXmlHelper::GetFirstOrCreateAttribute(materalCreateDlgNode, _T("IsRemoveBothEndEmptyList")).set_value(m_bIsRemoveBothEndEmptyList);
	bool m_bIsShowPage = ((CButton*)GetDlgItem(IDC_CHECK_ZW_MATERIAL_IS_SHOW_PAGE))->GetCheck();
	Zwc::ZXmlHelper::GetFirstOrCreateAttribute(materalCreateDlgNode, _T("IsShowPage")).set_value(m_bIsShowPage);
	xml.saveFile(Z_SP::FP::DlgDefault());
	return TRUE;
}
bool CZWMateralCreateDlg::LoadDataFromXML(StructMatarialCreate &structmetariaCreateData)
{///StructMatarialCreate已定义的结构体,做项目时需要给结构体对象赋值,故设置结形参。也可以不加形参,具体问题具体分析
	Zwc::ZXml xml;
	pugi::xml_parse_result result = xml.loadFile(Z_SP::FP::DlgDefault());
	if (result.status != pugi::status_ok)
		return FALSE;

	pugi::xml_node root = xml.root().child(_T("xmlRoot"));
	if (root.empty())
		return FALSE;

	pugi::xml_node materalCreateDlgNode = root.child(_T("MateralCreateDlg"));
	if (materalCreateDlgNode.empty())
		return FALSE;

	structmetariaCreateData.m_bIsCreateExcelFile = materalCreateDlgNode.attribute(_T("IsCreateExcelTable")).as_bool();///获取名为IsCreateExcelTable的记录,是bool类型的
	structmetariaCreateData.m_strExcleTemplatePath = materalCreateDlgNode.attribute(_T("ExcleTemplatePath")).as_string();
	structmetariaCreateData.m_strSaveExcleFilePath = materalCreateDlgNode.attribute(_T("SaveExcleFilePath")).as_string();
	structmetariaCreateData.m_bIsAttachTableHeader = materalCreateDlgNode.attribute(_T("IsAppendToTableHeader")).as_bool();
	structmetariaCreateData.m_bIsAttachTableFooter = materalCreateDlgNode.attribute(_T("IsAppendToTableFooter")).as_bool();
	structmetariaCreateData.m_bIsRemoveBothEndEmptyList = materalCreateDlgNode.attribute(_T("IsRemoveBothEndEmptyList")).as_bool();
	structmetariaCreateData.m_bIsShowPage = materalCreateDlgNode.attribute(_T("IsShowPage")).as_bool();
	return TRUE;
}

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/zaji/5699173.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存