MSXML读写的例子

1、目标文档:

lizlex
XML Developer's Guide

2、步骤:

(1)在StdAfx.h中引入动态链接库 MSXML.DLL(C:\windows\system32\msxml4.dll)

#import

(2)界面设计: 分别放入三个Text,用于输入数据,与显示文档内容用,并添加关联的成员变量m_strId,m_strAuthor, m_strTitle;并添加确定按钮:

(3)产生文档的程序片断 void CXmlparseDlg::OnButtonGenerate() { UpdateData();

MSXML2::IXMLDOMDocumentPtr pDoc; MSXML2::IXMLDOMElementPtr xmlRoot ;

//创建DOMDocument对象

HRESULT hr = pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument40)); if(!SUCCEEDED(hr)) { MessageBox(“无法创建DOMDocument对象,请检查是否安装了MS XML Parser 运行库!”); return ; }

//根节点的名称为Book //创建元素并添加到文档中 xmlRoot=pDoc->createElement((_bstr_t)”Book”);

//设置属性 xmlRoot->setAttribute(“id”,(const char *)m_strId); pDoc->appendChild(xmlRoot); MSXML2::IXMLDOMElementPtr pNode;

//添加“author”元素 pNode=pDoc->createElement((_bstr_t)”Author”); pNode->Puttext((_bstr_t)(const char *)m_strAuthor); xmlRoot->appendChild(pNode);

//添加“Title”元素 pNode=pDoc->createElement(“Title”); pNode->Puttext((const char *)m_strTitle); xmlRoot->appendChild(pNode);

//保存到文件 //如果不存在就建立,存在就覆盖 pDoc->save(“d:\he.xml”);

}

(4)读取XML文档的程序片断 void CXmlparseDlg::OnButtonLoad() { MSXML2::IXMLDOMDocumentPtr pDoc; HRESULT hr; hr=pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument40)); if(FAILED(hr)) { MessageBox(“无法创建DOMDocument对象,请检查是否安装了MS XML Parser 运行库!”); return ; }

//加载文件 pDoc->load(“d:\he.xml”);

MSXML2::IXMLDOMNodePtr pNode;

//在树中查找名为Book的节点,”//“表示在任意一层查找 pNode=pDoc->selectSingleNode(“//Book”);

MSXML2::DOMNodeType nodeType;

//得到节点类型 pNode->get_nodeType(&nodeType;);

//节点名称 CString strName;

strName=(char *)pNode->GetnodeName();

//节点属性,放在链表中 MSXML2::IXMLDOMNamedNodeMapPtr pAttrMap=NULL; MSXML2::IXMLDOMNodePtr pAttrItem; _variant_t variantvalue; pNode->get_attributes(&pAttrMap;);

long count; count=pAttrMap->get_length(&count;);

pAttrMap->get_item(0,&pAttrItem;); //取得节点的值 pAttrItem->get_nodeTypedvalue(&variantvalue;); m_strId=(char *)(_bstr_t)variantvalue;

UpdateData(FALSE);

}

支持原创技术分享,据说打赏我的人,都找到了女朋友!