利用msxml创建xml

利用msxml进行xml的创建与解析。
第一部分:xml的创建
创建了一个类,用来创建xml文件。
LoadXmlFile.cpp文件内容如下:
#include "StdAfx.h"
#include "LoadXMLFile.h"
#include  <msxml6.h>

LoadXMLFile::LoadXMLFile(void)
{
}


LoadXMLFile::~LoadXMLFile(void)
{
}

BOOL LoadXMLFile::getXML(const CString cstrXML)
{
	//加载.xml文件
	CComPtr<IXMLDOMDocument> spXMLDoc;

	HRESULT hr = spXMLDoc.CoCreateInstance(_uuidof(DOMDocument));	
	hr = spXMLDoc->put_async(VARIANT_TRUE);

	VARIANT_BOOL bLoad;
	
	hr = spXMLDoc->load(CComVariant(cstrXML), &bLoad);

	CComPtr<IXMLDOMDocument> spLoadFile;
	CComPtr<IXMLDOMElement> spNewNode;

	spLoadFile = spXMLDoc.Detach();

	//创建跟结点<china>
	spLoadFile->createElement(CComBSTR("学校"), &spNewNode);
	spLoadFile->putref_documentElement(spNewNode);
		
	//添加属性结点
	spNewNode->setAttribute(CComBSTR("what"),CComVariant("up"));

	//添加注释结点
	CComPtr<IXMLDOMComment> spComment;
	CComPtr<IXMLDOMNode> spInserteNode;	
	spLoadFile->createComment(CComBSTR("学院名字"), &spComment);
	spNewNode->appendChild((IXMLDOMNode*) spComment,&spInserteNode);
	

	//添加普通子节点
	CComPtr<IXMLDOMNode> spChildNode;
	CComPtr<IXMLDOMNode> spXMLNode;
	spLoadFile->createNode(CComVariant(NODE_ELEMENT), CComBSTR("学院"), NULL, &spXMLNode);
	spXMLNode->put_text(CComBSTR("计算机学院"));
	spNewNode->appendChild(spXMLNode, &spChildNode);
	CComPtr<IXMLDOMNamedNodeMap> MapNode;

	//添加带有子结点的节点
	CComPtr<IXMLDOMNode> spBJChildNode;
	CComPtr<IXMLDOMNode> spNode;
	spLoadFile->createNode(CComVariant(NODE_ELEMENT), CComBSTR("学院"), NULL, &spNode);
	spNode->put_text(CComBSTR("信通院"));
	spNewNode->appendChild(spNode, &spBJChildNode);

	CComPtr<IXMLDOMNode> spBJChild;
	CComPtr<IXMLDOMNode> spBjChildNode;
	spLoadFile->createNode(CComVariant(NODE_ELEMENT), CComBSTR("专业"), NULL, &spBJChild);
	spBJChild->put_text(CComBSTR("通信工程"));
	spNode->appendChild(spBJChild,&spBjChildNode);


	spLoadFile->save(CComVariant(cstrXML));

	return TRUE;
}

在主函数中进行如下调用:

	CString strAddr = _T("company.xml");
	CoInitialize(NULL);
	LoadXMLFile loadXmlFile;
	loadXmlFile.getXML(strAddr);
	CoUninitialize();
创建xml结果如图:



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值