分享

VC实现对XML文件的读写

 浮 生 2010-12-29
VC实现对XML文件的读写
点击:0   发布日期:2007-6-11 13:29:00   进入论坛
 
 
1、安装MSXML 4.0 SP2。在VC6中建立一个基于Dialog的工程。如图:
 
在界面上放置3个编辑框、1个按钮控件。其中属性设置如下。
编辑框:

ID  Category  Variable Type  Variable Name 
IDC_ID  Value  CString  m_strId 
IDC_AUTHOR  Value  CString  m_strAuthor 
IDC_TITLE  Value  CString  m_strTitle 
按钮:
ID  Caption 
IDC_GENERATE  Generate 
IDC_LOAD  Load 
2、在App类的InitInstance函数里面加入如下代码:
 
 // Com口初始化
 AfxOleInit();
3、在StdAfx.h中引入动态链接库 MSXML.DLL(C:\windows\system32\msxml4.dll)
 
 #import  < msxml4.dll >
4、双击Generate按钮,在消息处理函数中添加如下代码:

 
 UpdateData(TRUE);
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 " );
双击Load按钮,在消息处理函数中添加如下代码:
 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); 
本文来自: 中国自学编程网(www.) 详细出处参考:http://www./html/20070611/22861.html

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多