VC读写XML文件

先安装控件msxml.msi

编码:

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

------------------------------------------------------------------------------------------------------------------------------------------------

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;

// 添加整个文档的根节点 
 void AddRootNode( CString strRootNode , CString strText = "")
 {
  m_pElement = m_pDoc->createElement( (LPCTSTR)strRootNode );
  m_pElement ->put_text( _bstr_t( (LPCTSTR)strText) );

  m_pDoc->appendChild( m_pElement );
 }

 

三种最流行的开放源码 XML 库 是 expat、libxml 和 Xerces。这三者都是跨平台的,每一种都充当 XSLT  实现的基础,一旦满足了基本 XML 需要之后,它就会给您一条成长途径。

  • expat 是 James Clark 创始的开放源码面向事件的 XML 解析 。他已经将该项目转让给了 SourceForge 中的一个小组。有一个 SAX 封装器可供使用。在许多项目中都可以找到 expat 解析器,如开放源码浏览器 Mozilla、XSLT 处理器 Transformiix 和 RDF 工具 repat。
  • libxml 为类似于 SAX 和 DOM 的操作提供了双重方式 API。它支持对 DTD 的验证,并且在 Gnome 的 XSLT 处理器libxslt 中使用。libxml 经过重写,已作为 libxml(2) 发布,也许还称为 libxml2 。这个 的用户应该确保他们拥有了当前版本。
  • Xerces 是非常坚固的、拥有大量文档的 ,它充当 IBM alphaWorks XML 4C  的基础。Xerces 还用于 Apache XSLT 处理器 Xalan 中。Xerces 支持 DOM、SAX,以及对 DTD 的验证。最新版本读取并解释了部分“W3C XML 模式推荐”(打算到 2001 年底实现完整的 XML 模式支持)。

你可能感兴趣的:(VC读写XML文件)