c读写配置文件

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

MSXML2::IXMLDOMDocumentPtr pDoc;

MSXML2::IXMLDOMElementPtr xmlRoot ;

// 创建DOMDocument对象

HRESUL T hr = pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument40));

if ( ! SUCCEEDED(hr))

{

MessageBox( " 无法创建DOMDocument对象,请检查是否安装了MS XML Parser 运行库! " );

return ;

}

// 根节点的名称为Book

// 创建元素并添加到文档中

xmlRoot = pDoc -> createElement((_bstr_t) " Book " );

// 设置属性

xmlRoot -> setA ttribute( " id " ,( const char * )m_strId);

pDoc -> appendChild(xmlRoot);

MSXML2::IXMLDOMElementPtr pNode;

// 添加“author”元素

pNode = pDoc -> createElement((_bstr_t) " A uthor " );

pNode -> Puttext((_bstr_t)( const char * )m_strA uthor);

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;

HRESUL T hr;

hr = pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument40));

if (FA ILED(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 pA ttrMap = NULL;

MSXML2::IXMLDOMNodePtr pA ttrItem;

_variant_t variantvalue;

pNode -> get_attributes( & pA ttrMap);

long count;

count = pA ttrMap -> get_length( & count);

pA ttrMap -> get_item( 0 , & pA ttrItem);

// 取得节点的值

pA ttrItem -> get_nodeTypedV alue( & variantvalue);

m_strId = ( char * )(_bstr_t)variantvalue;

// 添加整个文档的根节点

void A ddRootNode( 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 alphaWorksXML 4C 库的基础。

Xerces 还用于 Apache XSLT 处理器 Xalan 中。Xerces 支持 DOM、SAX,以及对 DTD 的验证。最新版本读取并解释了部分“W3C XML 模式推荐”(打算到 2001 年底实现完整的XML 模式支持)。

附:C/C++ 开发人员的解析器

库供应商事件文档特点许可证

本机与 SAX-带有本机 API 和LGPL(免费)expat James

Clark/expat 小组

相关文档
最新文档