c读写配置文件
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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 小组