使用MSXML进行xml编程

今天程序中有处理xml的相关操作,使用的是Micsoft的MSXML,记录下一些基本操作:

头文件:
#import "msxml3.dll"
using namespace MSXML2;
inline void TESTHR(HRESULT _hr) { if FAILED(_hr) throw(_hr); }

实现文件:
TESTHR(CoInitialize(NULL)); // 初始化 COM 环境

IXMLDOMNodePtr CClient::ReadXMLFile(const char *name)
{
    // 我们首先应该先创建一个 Document 对象 如果创建成功,那么我们就会得到一个 XMLDOMDocument 对象实例。
    MSXML::IXMLDOMDocumentPtr docPtr = NULL;

    try
    {
        //init
        docPtr.CreateInstance("msxml2.domdocument");
     
        // load a document
        _variant_t varXml(name);
        _variant_t varOut((bool)TRUE);
        varOut = docPtr->load(varXml);
        if ((bool)varOut == FALSE)
            throw(0);
       
        return docPtr;
    }
    catch(...)
    {
        IXMLDOMParseError *pIParseError = NULL;

        docPtr->get_parseError(&pIParseError);
        m_strError = (char *)pIParseError->srcText;
    }
   
    return NULL;
}

......
IXMLDOMNodePtr attr; // 创建 Element 对象
if ( ptr->nodeType == NODE_ELEMENT ) // 节点类型
{
    ptr->nodeName; // 节点名
    ptr->childNodes->length; // 子节点个数
    ptr->childNodes->item[i]->attributes->length; // 子节点第i项有几项属性
    ptr->childNodes->item[i]->attributes->get_item(j, &attr); // 子节点第i项的第j个属性
    attr->nodeName; // 上面属性的属性名称
    attr->text; // 上面属性的属性值
    ......
}

......
IXMLDOMNodePtr ptr;
ptr = ptr->parentNode->selectSingleNode("template[@lead_pri_form='AUTO_3X4']"); // 定位节点
......
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值