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);
}