MFC—xml应用实例

本文介绍了在MFC项目中如何利用TinyXML库进行XML文件的读取和写入操作。首先,从官方网站获取最新版的TinyXML库,接着展示了XML文件的内容和结构。在对话框中实现XML文件的打开功能,将文件中的数据解析并存储到程序变量中。同时,文章还详细讲解了如何创建新的XML文件,并填充数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

从官网下载最新tinyxml库

xml文件

<?xml version="1.0" encoding="gb2312" standalone="yes" ?>
<Root>
<FileType>txt_Information</FileType>
<List FileCount="3" ImageWitdh="896" ImageHeight="500" ImageBites="16">
<TXT>E:\data\201604281722\0\00000.dat</TXT>
<TXT>E:\data\201604281722\0\00000.dat</TXT>
<TXT>E:\data\201604281722\0\00000.dat</TXT>
</List>
</Root>

 

xml对话框

CString inputTxtXML;

const TCHAR szFilters[] = _T("XML files (*.xml)|*.xml|All Files (*.*)|*.*||");

CFileDialog dlg(TRUE, _T("XML"), _T("*.xml"), OFN_FILEMUSTEXIST | OFN_HIDEREADONLY, szFilters);

if (dlg.DoModal() == IDOK)
{
	inputTxtXML = dlg.GetPathName();

	int Where;
	Where = inputTxtXML.ReverseFind('\\');
	if (Where == -1)
		Where = inputTxtXML.ReverseFind('/');

    //以下代码是为新创建的文件设置路径
	tiffXML = inputTxtXML.Left(Where);
    tiffXML += "\\tifflist.xml";    
}
else
{
    return;
}

打开xml文件

USES_CONVERSION;
TiXmlDocument xml;
xml.LoadFile(T2A(inputTxtXML));

TiXmlHandle docHandle(&xml);
TiXmlElement* pFileType = docHandle.FirstChild("Root").FirstChild("FileType").ToElement();
//首先判断文件标识
if (!pFileType || strcmp(pFileType->GetText(), "txt_Information"))
{
	AfxMessageBox(_T("您打开的XML文件不是文本配置文件!"));
	return FALSE;
}

将xml文件中的值写入定义的变量中

int fCount, imageWidth, imageHeight, nBits;
TiXmlElement* pList = docHandle.FirstChild("Root").FirstChild("List").ToElement();

if (NULL != pList)
{
	pList->QueryIntAttribute("FileCount", &fCount);
	pList->QueryIntAttribute("ImageWitdh", &imageWidth);
	pList->QueryIntAttribute("ImageHeight", &imageHeight);
	pList->QueryIntAttribute("ImageBites", &nBits);
}

创建xml文件

//创建信息
TiXmlDocument tiff_xml;//输出结果的用XML文件组织起来
TiXmlDeclaration *declaration = new TiXmlDeclaration("1.0", "gb2312", "yes");
tiff_xml.LinkEndChild(declaration);

TiXmlElement *pRoot = new TiXmlElement("Root");
tiff_xml.LinkEndChild(pRoot);

TiXmlElement *pTiffFileType = new TiXmlElement("FileType");
TiXmlText *pFileTypeText = new TiXmlText("tiff_Information");
pTiffFileType->LinkEndChild(pFileTypeText);
pRoot->LinkEndChild(pTiffFileType);

TiXmlElement *pTiffList = new TiXmlElement("List");
pTiffList->SetAttribute("txtWitdh", imageWidth);//图像宽度
pTiffList->SetAttribute("txtHeight", imageHeight);
pTiffList->SetAttribute("totalHeight", fCount*imageHeight);//图像高度
pTiffList->SetAttribute("tiffBites", nBits);
pRoot->LinkEndChild(pTiffList);

//文件内容
TiXmlElement *pTiff = new TiXmlElement("TIFF");
tiffHeight = imageHeight*tag;
pTiff->SetAttribute("tiffHeight", tiffHeight );   //假设tiffHeight的值为11
TiXmlText *pSourceImageText = new TiXmlText(T2A(temp));
pTiff->LinkEndChild("nihao");
pTiffList->LinkEndChild(pTiff);

pTiffList->SetAttribute("tiffCount", tiffCount);
pTiffList->SetAttribute("combineFiles", nCombine);
pTiffList->SetAttribute("lastCombineFiles", tag);
tiff_xml.SaveFile(T2A(pView->tiffXML));
tiff_xml.Clear();//清除所有申请的空间
xml.Clear();

创建的xml文件

<?xml version="1.0" encoding="gb2312" standalone="yes" ?>
<Root>
    <FileType>tiff_Information</FileType>
    <List txtWitdh="896" txtHeight="500" totalHeight="1750500" tiffBites="16" tiffCount="176" combineFiles="20" lastCombineFiles="1">
        <TIFF tiffHeight="11">nihao</TIFF>
    </List>
</Root>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值