锘??xml version="1.0" encoding="utf-8" standalone="yes"?>午夜精品久久久久久影视riav,久久婷婷五月综合成人D啪,久久久精品久久久久影院http://m.shnenglu.com/Lee7/category/8391.html 褰撳崕緹庣殑鍙剁墖钀藉敖錛岀敓鍛界殑鑴夌粶鎵嶅巻鍘嗗彲瑙併?錛嶏紞 鑱傞瞾杈? zh-cnTue, 07 Jul 2009 13:32:30 GMTTue, 07 Jul 2009 13:32:30 GMT6011http://m.shnenglu.com/Lee7/archive/2009/07/06/89400.htmlisabcisabcMon, 06 Jul 2009 13:05:00 GMThttp://m.shnenglu.com/Lee7/archive/2009/07/06/89400.htmlhttp://m.shnenglu.com/Lee7/comments/89400.htmlhttp://m.shnenglu.com/Lee7/archive/2009/07/06/89400.html#Feedback0http://m.shnenglu.com/Lee7/comments/commentRss/89400.htmlhttp://m.shnenglu.com/Lee7/services/trackbacks/89400.htmlHRESULT CUnknownImpl::QueryInterface ( REFIID riid, void** ppv )
{
    HRESULT hrRet 
= S_OK;    
    
// 鏍囧噯QI()鍒濆鍖?nbsp;– 緗?nbsp;*ppv 涓?nbsp;NULL.    
    *ppv = NULL;    
    
// 濡傛灉瀹㈡埛绔姹傛彁渚涚殑鎺ュ彛錛岀粰 *ppv.璧嬪?nbsp;   
    if ( IsEqualIID ( riid, IID_IUnknown ))        
    {        
        
*ppv = (IUnknown*this;        
    }    
    
else        
    {        
        
// 涓嶆彁渚涘鎴風璇鋒眰鐨勬帴鍙?/span>
        hrRet = E_NOINTERFACE;        
    }    
    
// 濡傛灉榪斿洖涓涓帴鍙f寚閽堛?nbsp;璋冪敤AddRef()澧炲姞寮曠敤璁℃暟.    
    if ( S_OK == hrRet )        
    {        
        ((IUnknown
**ppv)->AddRef();    
    }    
    
return hrRet;
}
鍦≦I()涓仛浜嗕笁浠朵笉鍚岀殑浜嬫儏錛?/span>1銆佸垵濮嬪寲浼犲叆鐨勬寚閽堜負NULL[*ppv = NULL;]銆?/span>2銆佹鏌iid錛岀‘瀹氱粍浠跺璞$被錛坈oclass錛夊疄鐜頒簡瀹㈡埛绔墍璇鋒眰鎺ュ彛.[if ( IsEqualIID ( riid, IID_IUnknown ))]3銆佸鏋滅‘瀹炲疄鐜板嫆绱㈣姹傜殑鎺ュ彛錛屽垯澧炲姞COM瀵硅薄鐨勫紩鐢ㄨ鏁般俒((IUnknown**ppv)->AddRef();]AddRef()璋冪敤寰堝叧閿?nbsp;   *ppv = (IUnknown*this;


struct IClassFactory : public IUnknown
{    
    HRESULT CreateInstance( IUnknown
* pUnkOuter, REFIID riid, void** ppvObject );    
    HRESULT LockServer( BOOL fLock );
};

struct ISimpleMsgBox : public IUnknown
{    
    
// IUnknown 鏂規硶    
    ULONG AddRef();    
    ULONG Release();    
    HRESULT QueryInterface( REFIID riid, 
void** ppv );    
    
// ISimpleMsgBox鏂規硶    
    HRESULT DoSimpleMsgBox( HWND hwndParent, BSTR bsMessageText );
};
struct __declspec(uuid("{7D51904D-1645-4a8c-BDE0-0F4A44FC38C4}")) ISimpleMsgBox;

class CSimpleMsgBoxImpl : public ISimpleMsgBox  
{
public:    
    CSimpleMsgBoxImpl();        
    
virtual ~CSimpleMsgBoxImpl();    
    
// IUnknown 鏂規硶    
    ULONG AddRef();    
    ULONG Release();    
    HRESULT QueryInterface( REFIID riid, 
void** ppv );    
    
// ISimpleMsgBox 鏂規硶    
    HRESULT DoSimpleMsgBox( HWND hwndParent, BSTR bsMessageText );
protected:    
    ULONG m_uRefCount;
};
    
class  __declspec(uuid("{7D51904E-1645-4a8c-BDE0-0F4A44FC38C4}")) CSimpleMsgBoxImpl;
    
//褰撴煇涓瀹㈡埛绔兂瑕佸垱寤轟竴涓猄impleMsgBox COM瀵硅薄鏃訛紝瀹冨簲璇ョ敤涓嬮潰榪欐牱鐨勪唬鐮侊細
    ISimpleMsgBox* pIMsgBox;
    HRESULT hr;
// 緇勪歡瀵硅薄綾葷殑CLSID 
    hr = CoCreateInstance ( __uuidof(CSimpleMsgBoxImpl),                            
                            NULL,                       
// 闈炶仛鍚?nbsp;      
                            CLSCTX_INPROC_SERVER,        // 榪涚▼鍐呮湇鍔″櫒     
                            __uuidof(ISimpleMsgBox),    // 鎵璇鋒眰鎺ュ彛鐨処ID     
                            (void**&pIMsgBox );        // 榪斿洖鐨勬帴鍙f寚閽堢殑鍦板潃

class CSimpleMsgBoxClassFactory : public IClassFactory
{
public:    
    CSimpleMsgBoxClassFactory();    
    
virtual ~CSimpleMsgBoxClassFactory();    
    
// IUnknown鏂規硶    
    ULONG AddRef();    
    ULONG Release();    
    HRESULT QueryInterface( REFIID riid, 
void** ppv );    
    
// IClassFactory鏂規硶
    HRESULT CreateInstance( IUnknown* pUnkOuter, REFIID riid, void** ppv );    
    HRESULT LockServer( BOOL fLock );
protected:    
    ULONG m_uRefCount;
};
//鏋勯犲嚱鏁般佹瀽鏋勫嚱鏁板拰IUnknown鏂規硶閮藉拰鍓嶉潰渚嬪瓙涓殑涓鏍鳳紝涓嶅悓鐨勫彧鏈塈ClassFactory鐨勬柟娉曪紝LockServer()錛岀湅璧鋒潵鐩稿綋鏇寸畝鍗曪細
HRESULT CSimpleMsgBoxClassFactory::LockServer ( BOOL fLock )
{    
    fLock 
? g_uDllLockCount++ : g_uDllLockCount--;    
    
return S_OK;
}

HRESULT DllGetClassObject ( REFCLSID rclsid, REFIID riid, void** ppv )
{    
// 媯鏌ュ鎴風鎵瑕佺殑CSimpleMsgBoxImpl綾誨伐鍘?nbsp;   
    if ( !InlineIsEqualGUID ( rclsid, __uuidof(CSimpleMsgBoxImpl) ))        
        
return CLASS_E_CLASSNOTAVAILABLE;    
    
//媯鏌ユ寚閽坧pv鏄笉鏄痸oid*綾誨瀷    
    if ( IsBadWritePtr ( ppv, sizeof(void*) ))        
        
return E_POINTER;    
    
*ppv = NULL;


    CSimpleMsgBoxClassFactory* pFactory;    // 鏋勯犱竴涓柊鐨勭被宸ュ巶瀵硅薄    
    pFactory = new CSimpleMsgBoxClassFactory;    
    
if ( NULL == pFactory )        
        
return E_OUTOFMEMORY;

    // 璋冪敤AddRef()澧炲姞涓涓被宸ュ巶寮曠敤璁℃暟錛屽洜涓烘垜浠鍦ㄤ嬌鐢ㄥ畠
    pFactory->AddRef();
    HRESULT hrRet;    
// 璋冪敤QI()鏌ヨ瀹㈡埛绔墍瑕佺殑綾誨伐鍘傛帴鍙?nbsp;   
    hrRet = pFactory->QueryInterface ( riid, ppv ); // 浣跨敤瀹岀被宸ュ巶鍚庤皟鐢≧elease()閲婃斁瀹?nbsp;   
    pFactory->Release();    
    
return hrRet;
}

HRESULT CSimpleMsgBoxClassFactory::CreateInstance ( IUnknown* pUnkOuter,
                                                   REFIID    riid,  
                                                   
void**    ppv )
{    
// 鍥犱負涓嶆敮鎸佽仛鍚堬紝鎵浠ヨ繖涓弬鏁皃UnkOuter蹇呴』涓篘ULL.    
    if ( NULL != pUnkOuter )        
        
return CLASS_E_NOAGGREGATION;    
    
//媯鏌ユ寚閽坧pv鏄笉鏄痸oid*綾誨瀷    
    if ( IsBadWritePtr ( ppv, sizeof(void*) ))        
        
return E_POINTER;    
    
*ppv = NULL;//媯鏌ュ畬鍙傛暟鐨勬湁鏁堟у悗錛屽氨鍙互鍒涘緩涓涓柊鐨勫璞′簡銆?/span>
    CSimpleMsgBoxImpl* pMsgbox;    // 鍒涘緩涓涓柊鐨凜OM瀵硅薄    
    pMsgbox = new CSimpleMsgBoxImpl;    
    
if ( NULL == pMsgbox )        
        
return E_OUTOFMEMORY;//鏈鍚庯紝鐢≦I()鏉ユ煡璇㈠鎴風鎵璇鋒眰鐨勬柊瀵硅薄鐨勬帴鍙c傚鏋淨I()澶辮觸錛屽垯榪欎釜瀵硅薄涓嶅彲鐢紝蹇呴』鍒犻櫎瀹冦?/span>
    HRESULT hrRet;    // 鐢≦I鏌ヨ瀹㈡埛绔墍璇鋒眰鐨勫璞℃帴鍙?nbsp;   
    hrRet = pMsgbox->QueryInterface ( riid, ppv );    // 濡傛灉QI澶辮觸錛屽垯鍒犻櫎榪欎釜COM瀵硅薄錛屽洜涓哄鎴風涓嶈兘浣跨敤瀹冿紙瀹㈡埛绔病鏈?nbsp;   //榪欎釜瀵硅薄鐨勪換浣曟帴鍙o級    
    if ( FAILED(hrRet) )        
        delete pMsgbox;    
    
return hrRet;
}

HRESULT CSimpleMsgBoxClassFactory::QueryInterface( REFIID riid, void** ppv )
{
    HRESULT hrRet 
= S_OK;    //媯鏌ユ寚閽坧pv鏄笉鏄痸oid*綾誨瀷    
    if ( IsBadWritePtr ( ppv, sizeof(void*) ))       
        
return E_POINTER;    //鏍囧噯鐨凲I鍒濆鍖栵紝灝嗚祴鍊間負NULL.    
    *ppv = NULL;//鎺ヤ笅鏉ユ鏌iid錛岀湅鐪嬪畠鏄笉鏄被宸ュ巶瀹炵幇鐨勬帴鍙d箣涓錛欼Unknown 鎴?nbsp;IclassFactory銆?nbsp;   
    
// 濡傛灉瀹㈡埛绔姹備竴涓湁鏁堟帴鍙o紝鍒欐壎妞嶇粰 *ppv.    
    if ( InlineIsEqualGUID ( riid, IID_IUnknown ))       
    {        
        
*ppv = (IUnknown*this;        
    }    
    
else if ( InlineIsEqualGUID ( riid, IID_IClassFactory ))        
    {        
        
*ppv = (IClassFactory*this;        
    }    
    
else        
    {        
        hrRet 
= E_NOINTERFACE;       
    }
//鏈鍚庯紝濡傛灉riid鏄湁鏁堟帴鍙o紝鍒欒皟鐢ㄦ帴鍙g殑AddRef()錛岀劧鍚庤繑鍥炪?nbsp;   
    
//濡傛灉榪斿洖鏈夋晥鎺ュ彛鎸囬拡錛屽垯璋冪敤AddRef()     
    if ( S_OK == hrRet )       
    {        
        ((IUnknown
**ppv)->AddRef();        
    }   
    
return hrRet;
}


HRESULT CSimpleMsgBoxImpl::DoSimpleMsgBox ( HWND hwndParent, BSTR bsMessageText )
{
    _bstr_t bsMsg 
= bsMessageText;
    LPCTSTR szMsg 
= (TCHAR*) bsMsg;   
    
// 濡傛灉闇瑕佺殑璇濓紝鐢╛bstr_t灝嗕覆杞崲涓篈NSI 鍋氬畬杞崲鐨勫伐浣滃悗錛屾樉紺轟俊鎭錛岀劧鍚庤繑鍥炪?nbsp;   
    MessageBox ( hwndParent, szMsg, _T("Simple Message Box"), MB_OK );    
    
return S_OK;
}


void DoMsgBoxTest(HWND hMainWnd)
{
    ISimpleMsgBox
* pIMsgBox;
    HRESULT hr;
    hr 
= CoCreateInstance ( __uuidof(CSimpleMsgBoxImpl),  // 緇勪歡瀵硅薄綾葷殑CLSID                            
                            NULL,                // 闈炶仛鍚?nbsp;                           
                            CLSCTX_INPROC_SERVER,  // 鍙嬌鐢ㄨ繘紼嬪唴鏈嶅姟鍣?nbsp;                          
                            __uuidof(ISimpleMsgBox), // 鎵璇鋒眰鎺ュ彛鐨処ID                            
                            (void**&pIMsgBox );   // 瀹圭撼鎺ュ彛鎸囬拡鐨勭紦鍐?nbsp;   
    if ( FAILED(hr) )
        
return;
    
//鐒跺悗璋冪敤DoSimpleMsgBox()鏂規硶騫墮噴鏀炬帴鍙c?nbsp;   
    pIMsgBox->DoSimpleMsgBox ( hMainWnd, _bstr_t("Hello COM!") );    
    pIMsgBox
->Release();
}

struct ISimpleMsgBox : public IUnknown
{    
    
// IUnknown 鏂規硶    
    STDMETHOD_(ULONG, AddRef)() PURE;    
    STDMETHOD_(ULONG, Release)() PURE;    
    STDMETHOD(QueryInterface)(REFIID riid, 
void** ppv) PURE;    
    
// ISimpleMsgBox 鏂規硶    
    STDMETHOD(DoSimpleMsgBox)(HWND hwndParent, BSTR bsMessageText) PURE;
};



isabc 2009-07-06 21:05 鍙戣〃璇勮
]]>
鍒╃敤VC++涓嶮SXML瑙f瀽XML鏂囨。http://m.shnenglu.com/Lee7/archive/2009/06/13/87599.htmlisabcisabcSat, 13 Jun 2009 11:25:00 GMThttp://m.shnenglu.com/Lee7/archive/2009/06/13/87599.htmlhttp://m.shnenglu.com/Lee7/comments/87599.htmlhttp://m.shnenglu.com/Lee7/archive/2009/06/13/87599.html#Feedback0http://m.shnenglu.com/Lee7/comments/commentRss/87599.htmlhttp://m.shnenglu.com/Lee7/services/trackbacks/87599.html

鍒╃敤VC++涓?/font>MSXML瑙f瀽XML鏂囨。

涓銆?/span>鏂囨。瀵硅薄妯″瀷錛?font face="Times New Roman">DOM錛?/font>
銆銆DOM鏄?/font>Document Object Model錛堟枃妗e璞℃ā鍨嬶級鐨勭畝縐幫紝鏄XML鏂囨。榪涜搴旂敤寮鍙戙佺紪紼嬬殑搴旂敤紼嬪簭鎺ュ彛錛?/font>API錛夈備綔涓?/font>W3C鍏竷鐨勪竴縐嶈法騫沖彴銆佷笌璇█鏃犲叧鐨勬帴鍙h鑼冿紝DOM鎻愪緵浜嗗湪涓嶅悓鐜鍜屽簲鐢ㄤ腑鐨勬爣鍑嗙▼搴忔帴鍙o紝鍙互鐢ㄤ換浣曡璦瀹炵幇銆?/font>
銆銆DOM閲囩敤瀵硅薄妯″瀷鍜屼竴緋誨垪鐨勬帴鍙f潵鎻忚堪XML鏂囨。鐨勫唴瀹瑰拰緇撴瀯錛屽嵆鍒╃敤瀵硅薄鎶婃枃妗fā鍨嬪寲銆傝繖縐嶅璞℃ā鍨嬪疄鐜扮殑鍩烘湰鍔熻兘鍖呮嫭錛?/font>
銆銆鈼?nbsp;鎻忚堪鏂囨。琛ㄧず鍜屾搷浣滅殑鎺ュ彛錛?/font>
銆銆鈼?nbsp;鎺ュ彛鐨勫睘鎬у拰鏂規硶錛?/font>
銆銆鈼?nbsp;鎺ュ彛涔嬮棿鐨勫叧緋諱互鍙婁簰鎿嶄綔銆?/font>
銆銆DOM鍙緇撴瀯鍖栫殑XML鏂囨。榪涜瑙f瀽錛屾枃妗d腑鐨勬寚浠ゃ佸厓绱犮佸疄浣撱佸睘鎬х瓑鎵鏈夊唴瀹逛釜浣撻兘鐢ㄥ璞℃ā鍨嬭〃紺猴紝鏁翠釜鏂囨。琚湅鎴愭槸涓涓湁緇撴瀯鐨?/font>淇℃伅鏍?/span>錛岃屼笉鏄畝鍗曠殑鏂囨湰嫻侊紝鐢熸垚鐨勫璞℃ā鍨嬪氨鏄爲鐨勮妭鐐癸紝瀵硅薄鍚屾椂鍖呭惈浜?/span>鏂規硶鍜?/span>灞炴?/span>銆傚洜姝わ紝瀵規枃妗g殑鎵鏈夋搷浣滈兘鏄湪瀵硅薄鏍?/span>涓婄殑榪涜銆傚湪DOM涓紝鏍戜腑鐨勪竴鍒囬兘鏄璞★紝涓嶇鏄牴鑺傜偣榪樻槸瀹炰綋鐨勫睘鎬с?/font>
銆銆鍦?font face="Times New Roman">DOM
涓富瑕佹湁浠ヤ笅涓変釜瀵硅薄錛?/font>

銆銆鈼?/font> XML鏂囨。瀵硅薄
XML鏂囨。鏃㈡槸涓縐嶅璞★紝鍚屾椂鍙堜唬琛ㄦ暣涓?/font>XML鏂囨。銆傚畠鐢?/font>鏍瑰厓绱?/span>鍜?/span>瀛愬厓绱?/span>緇勬垚銆?/span>
銆銆鈼?/font> XML鑺傜偣瀵硅薄
XML鑺傜偣瀵硅薄浠h〃鐨勬槸XML鏂囨。鍐呴儴鐨勮妭鐐癸紝濡傚厓绱犮佹敞閲娿佸悕瀛楃┖闂寸瓑銆?/font>
銆銆鈼?nbsp;XML鑺傜偣鍒楄〃
XML鏂囨。妯″潡鍒楄〃浠h〃浜嗚妭鐐圭殑闆嗗悎銆?/font>
銆銆鍒╃敤DOM錛屽紑鍙戜漢鍛樺彲浠ュ姩鎬佸湴鍒涘緩XML鏂囨。錛?/font>閬嶅巻緇撴瀯錛?/span>娣誨姞銆佷慨鏀廣佸垹闄?/span>鍐呭絳夈傚叾闈㈠悜瀵硅薄鐨勭壒鎬э紝浣夸漢浠湪澶勭悊XML瑙f瀽鐩稿叧鐨勪簨鍔℃椂鑺傜渷澶ч噺鐨勭簿鍔涳紝鏄竴縐嶇鍚堜唬鐮侀噸鐢ㄦ濇兂鐨勫己鏈夊姏緙栫▼宸ュ叿銆?/font>

浜屻?font face="Times New Roman">DOM鐨勫洓涓熀鏈帴鍙?/font>(寮曠敤鑷細http://bbs.xml.org.cn/dispbbs.asp?boardID=11&ID=9220)

鍦?font face="Times New Roman">DOM鎺ュ彛瑙勮寖涓紝鏈夊洓涓熀鏈殑鎺ュ彛錛?font face="Times New Roman">Document錛?/font>Node錛?/font>NodeList浠ュ強NamedNodeMap銆傚湪榪欏洓涓熀鏈帴鍙?nbsp;涓紝Document鎺ュ彛鏄鏂囨。榪涜鎿嶄綔鐨勫叆鍙o紝瀹冩槸浠?/font>Node鎺ュ彛緇ф壙榪囨潵鐨勩?/font>Node鎺ュ彛鏄叾浠栧ぇ澶氭暟鎺ュ彛鐨勭埗綾伙紝璞?nbsp;Documet錛?/font>Element錛?/font>Attribute錛?/font>Text錛?/font>Comment絳夋帴鍙i兘鏄粠Node鎺ュ彛緇ф壙榪囨潵鐨勩?/font>NodeList鎺ュ彛鏄竴涓妭鐐圭殑闆嗗悎錛屽畠鍖呭惈浜嗘煇涓妭鐐逛腑鐨勬墍鏈夊瓙鑺傜偣銆?/font>NamedNodeMap鎺ュ彛涔熸槸涓涓妭鐐圭殑闆嗗悎錛岄氳繃璇ユ帴鍙o紝鍙互寤虹珛鑺傜偣鍚嶅拰鑺傜偣涔嬮棿鐨勪竴涓鏄犲皠鍏崇郴錛屼粠鑰屽埄 鐢ㄨ妭鐐瑰悕鍙互鐩存帴璁塊棶鐗瑰畾鐨勮妭鐐廣備笅闈㈠皢瀵硅繖鍥涗釜鎺ュ彛鍒嗗埆鍋氫竴浜涚畝鍗曠殑浠嬬粛銆?/font>
 1銆?/font>Document鎺ュ彛

Document鎺ュ彛浠h〃浜嗘暣涓?/font>XML/HTML鏂囨。錛屽洜姝わ紝瀹冩槸鏁存5鏂囨。鏍戠殑鏍癸紝鎻愪緵浜嗗鏂囨。涓殑鏁版嵁榪涜璁塊棶鍜屾搷浣滅殑鍏ュ彛銆?/font>
鐢變簬鍏冪礌銆佹枃鏈妭鐐廣佹敞閲娿佸鐞嗘寚浠ょ瓑閮戒笉鑳借劚紱繪枃妗g殑涓婁笅鏂囧叧緋昏岀嫭绔嬪瓨鍦紝鎵浠ュ湪Document鎺ュ彛鎻愪緵浜嗗垱寤哄叾浠栬妭鐐瑰璞$殑鏂規硶錛岄氳繃璇ユ柟娉曞垱寤虹殑鑺傜偣瀵硅薄閮芥湁涓涓?/font>ownerDocument灞炴э紝鐢ㄦ潵琛ㄦ槑褰撳墠鑺傜偣鏄敱璋佹墍鍒涘緩鐨勪互鍙婅妭鐐瑰悓Document涔嬮棿鐨勮仈緋匯?/font>

鍦?font face="Times New Roman">DOM鏍戜腑錛?/font>Document鑺傜偣鏄?/font>DOM鏍戜腑鐨勬牴鑺傜偣錛屼篃鍗沖XML鏂囨。榪涜鎿嶄綔鐨勫叆鍙h妭鐐廣傞氳繃Docuemt鑺傜偣錛屽彲浠ヨ闂埌鏂囨。涓殑鍏朵粬鑺傜偣錛?nbsp;濡傚鐞嗘寚浠ゃ佹敞閲娿佹枃妗g被鍨嬩互鍙?/font>XML鏂囨。鐨勬牴鍏冪礌鑺傜偣絳夌瓑銆傚彟澶栵紝鍦ㄤ竴媯?/font>DOM鏍戜腑錛?/font>Document鑺傜偣鍙互鍖呭惈澶氫釜澶勭悊鎸囦護銆佸涓敞閲婁綔涓哄叾瀛愯妭 鐐癸紝鑰屾枃妗g被鍨嬭妭鐐瑰拰XML鏂囨。鏍瑰厓绱犺妭鐐歸兘鏄敮涓鐨勩?/font>

鍏充簬Document鎺ュ彛鐨?/font>IDL錛?/font>Interface Definition Language鎺ュ彛瀹氫箟璇█錛夊畾涔夊拰鍏朵腑涓浜涙瘮杈冨父鐢ㄧ殑灞炴у拰鏂規硶鐨勮緇嗕粙緇嶅彲浠ュ湪MSDN涓壘鍒般?/font>
 2銆?/font>Node鎺ュ彛

Node鎺ュ彛鍦ㄦ暣涓?/font>DOM鏍戜腑鍏鋒湁涓捐凍杞婚噸鐨勫湴浣嶏紝DOM鎺ュ彛涓湁寰堝ぇ涓閮ㄥ垎鎺ュ彛鏄粠Node鎺ュ彛緇ф壙榪囨潵鐨勶紝渚嬪錛?/font>Element銆?/font>Attr銆?/font>CDATASection絳夋帴鍙o紝閮芥槸浠?/font>Node緇ф壙榪囨潵鐨勩傚湪DOM鏍戜腑錛?/font>Node鎺ュ彛浠h〃浜嗘爲涓殑涓涓妭鐐廣?/font>
 3銆?/font>NodeList鎺ュ彛

NodeList鎺ュ彛鎻愪緵浜嗗鑺傜偣闆嗗悎鐨勬娊璞″畾涔夛紝瀹冨茍涓嶅寘鍚浣曞疄鐜拌繖涓妭鐐歸泦鐨勫畾涔夈?/font>NodeList鐢ㄤ簬琛ㄧず鏈夐『搴忓叧緋葷殑涓緇勮妭鐐癸紝姣斿鏌愪釜鑺傜偣鐨勫瓙鑺傜偣搴忓垪銆傚彟澶栵紝瀹冭繕鍑虹幇鍦ㄤ竴浜涙柟娉曠殑榪斿洖鍊間腑錛屼緥濡?/font>GetNodeByName銆?/font>

鍦?font face="Times New Roman">DOM涓紝NodeList鐨勫璞℃槸"live"鐨勶紝鎹㈠彞璇濊錛屽鏂囨。鐨勬敼鍙橈紝浼氱洿鎺ュ弽鏄犲埌鐩稿叧鐨?/font>NodeList瀵硅薄涓備緥濡傦紝濡傛灉閫氳繃DOM鑾峰緱涓 涓?/font>NodeList瀵硅薄錛岃瀵硅薄涓寘鍚簡鏌愪釜Element鑺傜偣鐨勬墍鏈夊瓙鑺傜偣鐨勯泦鍚堬紝閭d箞錛屽綋鍐嶉氳繃DOM瀵?/font>Element鑺傜偣榪涜鎿嶄綔錛堟坊鍔犮佸垹闄ゃ佹敼 鍔ㄨ妭鐐逛腑鐨勫瓙鑺傜偣錛夋椂錛岃繖浜涙敼鍙樺皢浼氳嚜鍔ㄥ湴鍙嶆槧鍒?/font>NodeList瀵硅薄涓紝鑰屼笉闇DOM搴旂敤紼嬪簭鍐嶅仛鍏朵粬棰濆鐨勬搷浣溿?/font>

NodeList涓殑姣忎釜item閮藉彲浠ラ氳繃涓涓儲寮曟潵璁塊棶錛岃绱㈠紩鍊間粠0寮濮嬨?/font>
 4銆?/font>NamedNodeMap鎺ュ彛

瀹炵幇浜?font face="Times New Roman">NamedNodeMap鎺ュ彛鐨勫璞′腑鍖呭惈浜嗗彲浠ラ氳繃鍚嶅瓧鏉ヨ闂殑涓緇勮妭鐐圭殑闆嗗悎銆備笉榪囨敞鎰忥紝NamedNodeMap騫朵笉鏄粠NodeList緇?nbsp;鎵胯繃鏉ョ殑錛屽畠鎵鍖呭惈鐨勮妭鐐歸泦涓殑鑺傜偣鏄棤搴忕殑銆傚敖綆¤繖浜涜妭鐐逛篃鍙互閫氳繃绱㈠紩鏉ヨ繘琛岃闂紝浣嗚繖鍙槸鎻愪緵浜嗘灇涓?/font>NamedNodeMap涓墍鍖呭惈鑺傜偣鐨勪竴縐嶇畝 鍗曟柟娉曪紝騫朵笉琛ㄦ槑鍦?/font>DOM瑙勮寖涓負NamedNodeMap涓殑鑺傜偣瑙勫畾浜嗕竴縐嶆帓鍒楅『搴忋?/font>
 NamedNodeMap琛ㄧず鐨勬槸涓緇勮妭鐐瑰拰鍏跺敮涓鍚嶅瓧鐨勪竴涓瀵瑰簲鍏崇郴錛岃繖涓帴鍙d富瑕佺敤鍦ㄥ睘鎬ц妭鐐圭殑琛ㄧず涓娿?/font>

涓?font face="Times New Roman">NodeList鐩稿悓錛屽湪DOM涓紝NamedNodeMap瀵硅薄涔熸槸"live"鐨勩?/font>

涓夈?font face="Times New Roman">MSXML
    浠庣悊璁轟笂璇達紝鏍規嵁XML鐨勬牸寮忓畾涔夛紝鎴戜滑鍙互鑷繁緙栧啓涓涓?/font>XML鐨勮娉曞垎鏋愬櫒錛屼絾瀹為檯涓婂井杞凡緇忕粰鎴戜滑鎻愪緵浜嗕竴涓?/font>XML璇硶瑙f瀽鍣紝鍗充竴涓彨鍋?nbsp;MSXML.DLL鐨勫姩鎬侀摼鎺ュ簱錛屽疄闄呬笂瀹冩槸涓涓?/font>COM錛?/font>Component Object Model錛夊璞″簱錛岄噷闈㈠皝瑁呬簡榪涜XML瑙f瀽鏃舵墍闇瑕佺殑鎵鏈夊璞°傚洜涓?/font>COM鏄竴縐嶄互浜岃繘鍒舵牸寮忓嚭鐜扮殑鍜岃璦鏃犲叧鐨勫彲閲嶇敤瀵硅薄錛屾墍浠ヤ綘鍙互鐢ㄤ換浣曡璦 (姣斿VB錛?/font>VC錛?/font>DELPHI錛?/font>C++ Builder鐢氳嚦鏄剼鏈璦絳夌瓑)瀵瑰畠榪涜璋冪敤錛屽湪浣犵殑搴旂敤涓疄鐜板XML鏂囨。鐨勮В鏋愩?/font>
 銆銆MSXML.DLL鎵鍖呮嫭鐨勪富瑕?/font>COM鎺ュ彛鏈夛細
 銆1. IXMLDOMDocument(Document鎺ュ彛)
DOMDocument瀵硅薄鏄?/font>XML DOM鐨勫熀紜錛屼綘鍙互鍒╃敤瀹冩墍鏆撮湶鐨勫睘鎬у拰鏂規硶鏉ユ祻瑙堛佹煡璇㈠拰淇敼XML鏂囨。鐨勫唴瀹瑰拰緇撴瀯銆?/font>DOMDocument琛ㄧず浜嗘爲鐨勯《灞傝妭鐐癸紝瀹冨疄鐜頒簡DOM鏂?nbsp;妗g殑鎵鏈夌殑鍩烘湰鏂規硶錛屽茍涓旀彁渚涗簡棰濆鐨勬垚鍛樺嚱鏁版潵鏀寔XSL鍜?/font>XSLT銆傚畠鍒涘緩浜嗕竴涓枃妗e璞★紝鎵鏈夊叾浠栫殑瀵硅薄閮藉彲浠ヤ粠榪欎釜鏂囨。瀵硅薄涓緱鍒板拰鍒涘緩銆?/font>
 銆銆2. IXMLDOMNode(Node鎺ュ彛)
 銆銆IXMLDOMNode鏄枃妗e璞℃ā鍨?/font>(DOM)涓殑鍩烘湰瀵硅薄錛屽厓绱犮佸睘鎬с佹敞閲娿佽繃紼嬫寚浠ゅ拰鍏朵粬鐨勬枃妗g粍浠墮兘鍙互璁や負鏄?/font>IXMLDOMNode銆備簨瀹炰笂錛?/font>DOMDocument瀵硅薄鏈韓涔熸槸涓涓?/font>IXMLDOMNode瀵硅薄銆?/font>
 銆3. IXMLDOMNodeList
 銆銆IXMLDOMNodeList瀹為檯涓婃槸涓涓妭鐐?/font>(Node)瀵硅薄鐨勯泦鍚堬紝鑺傜偣鐨勫鍔犮佸垹闄ゅ拰鍙樺寲閮藉彲浠ュ湪闆嗗悎涓珛鍒誨弽鏄犲嚭鏉ワ紝鍙互閫氳繃"for.寰幆 "緇撴瀯鏉ラ亶鍘嗘墍鏈夌殑鑺傜偣銆?/font>
 銆銆4. IXMLDOMParseError
 銆銆IXMLDOMParseError鎺ュ彛鐢ㄦ潵榪斿洖鍦ㄨВ鏋愯繃紼嬩腑鎵鍑虹幇鐨勮緇嗙殑淇℃伅錛屽寘鎷敊璇彿銆佽鍙楓佸瓧絎︿綅緗拰鏂囨湰鎻忚堪銆?/font>
銆銆鍦ㄥ叿浣撳簲鐢ㄦ椂鍙互鐢?font face="Times New Roman">DOMDocument
鐨?/font>Load鏂規硶鏉ヨ杞?/font>XML鏂囨。錛岀敤IXMLDOMNode 鐨?/font>selectNodes錛堟煡璇㈢殑緇撴灉鏈夊涓紝寰楀埌瀛樻斁鎼滅儲緇撴灉鐨勯摼琛級鎴?/font>selectSingleNode錛堟煡璇㈢殑緇撴灉鏈変竴涓紝鍦ㄦ湁澶氫釜鐨勬儏鍐典笅榪斿洖鎵?nbsp;鍒扮殑絎竴涓妭鐐癸級鏂規硶榪涜鏌ヨ錛岀敤createNode鍜?/font>appendChild鏂規硶鏉ュ垱寤鴻妭鐐瑰拰榪藉姞鑺傜偣錛岀敤IXMLDOMElement鐨?nbsp;setAttribute鍜?/font>getAttribute鏂規硶鏉ヨ緗拰鑾峰緱鑺傜偣鐨勫睘鎬с?/font>

鍥涖佺紪紼嬩婦渚?/p> 1銆佺洰鏍囨枃妗o細  

<book id="bk101">
      
<author>lizlex</author>
      
<title>XML Developer's Guide</title>
 </book>

2銆佹楠わ細

(
1)鍦⊿tdAfx.h涓紩鍏ュ姩鎬侀摼鎺ュ簱 MSXML.DLL(C:\windows\system32\msxml4.dll)
 #import 
<msxml4.dll>

(
2)鐣岄潰璁捐錛?br>鍒嗗埆鏀懼叆涓変釜Text錛岀敤浜庤緭鍏ユ暟鎹紝涓庢樉紺烘枃妗e唴瀹圭敤錛屽茍娣誨姞鍏寵仈鐨勬垚鍛樺彉閲弇_strId,m_strAuthor, m_strTitle錛涘茍娣誨姞紜畾鎸夐挳錛?br>
(
3)浜х敓鏂囨。鐨勭▼搴忕墖鏂?br>void CXmlparseDlg::OnButtonGenerate()
 {
     UpdateData();
     
     MSXML2::IXMLDOMDocumentPtr pDoc;
     MSXML2::IXMLDOMElementPtr  xmlRoot ;
     
     
//鍒涘緩DOMDocument瀵硅薄
     HRESULT hr = pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument40));
     
if(!SUCCEEDED(hr))
     {  
         MessageBox(
"鏃犳硶鍒涘緩DOMDocument瀵硅薄錛岃媯鏌ユ槸鍚﹀畨瑁呬簡MS XML Parser 榪愯搴?");
         
return ;
     }
     
     
//鏍硅妭鐐圭殑鍚嶇О涓築ook
     
//鍒涘緩鍏冪礌騫舵坊鍔犲埌鏂囨。涓?/span>
     xmlRoot=pDoc->createElement((_bstr_t)"Book");
     
     
//璁劇疆灞炴?/span>
     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);
     
     
//淇濆瓨鍒版枃浠?br>     //濡傛灉涓嶅瓨鍦ㄥ氨寤虹珛,瀛樺湪灝辮鐩?/span>
     pDoc->save("d:\\he.xml");
     
 }

(
4)璇誨彇XML鏂囨。鐨勭▼搴忕墖鏂?br>void CXmlparseDlg::OnButtonLoad()
{
    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;
    
    
//鍦ㄦ爲涓煡鎵懼悕涓築ook鐨勮妭鐐?"//"琛ㄧず鍦ㄤ換鎰忎竴灞傛煡鎵?/span>
    pNode=pDoc->selectSingleNode("//Book");
    
    MSXML2::DOMNodeType nodeType;
    
    
//寰楀埌鑺傜偣綾誨瀷
    pNode->get_nodeType(&nodeType);
    
    
//鑺傜偣鍚嶇О
    CString strName;
    
    strName
=(char *)pNode->GetnodeName();
    
    
//鑺傜偣灞炴?鏀懼湪閾捐〃涓?/span>
    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);
    
//鍙栧緱鑺傜偣鐨勫?/span>
    pAttrItem->get_nodeTypedValue(&variantValue);
    m_strId
=(char *)(_bstr_t)variantValue;
    
    UpdateData(FALSE);
    
}



isabc 2009-06-13 19:25 鍙戣〃璇勮
]]>
香蕉久久夜色精品国产2020| 亚洲国产香蕉人人爽成AV片久久| 久久久久久精品免费免费自慰 | 久久精品国产精品亚洲毛片| 久久国产亚洲精品无码| 91久久成人免费| 波多野结衣AV无码久久一区| 久久国产一区二区| 久久久久久久91精品免费观看| 色欲久久久天天天综合网精品 | 亚洲精品tv久久久久| 久久久久国产精品熟女影院| 久久久久97国产精华液好用吗| 亚洲国产美女精品久久久久∴| 97超级碰碰碰碰久久久久| 亚洲国产精品无码久久久蜜芽 | 综合久久给合久久狠狠狠97色| 精品国际久久久久999波多野| 色婷婷综合久久久久中文字幕 | 久久久久se色偷偷亚洲精品av| 亚洲国产精品久久久久婷婷老年| 久久人妻AV中文字幕| 久久精品国产亚洲Aⅴ蜜臀色欲| 久久久久99精品成人片试看| 超级97碰碰碰碰久久久久最新| 日韩亚洲欧美久久久www综合网| 91精品国产综合久久久久久| 亚洲av伊人久久综合密臀性色| 伊人色综合久久天天人守人婷| 久久涩综合| 午夜精品久久影院蜜桃| 久久精品人妻一区二区三区| 国产91久久综合| 国产成人精品久久亚洲高清不卡 国产成人精品久久亚洲高清不卡 国产成人精品久久亚洲 | 欧美久久久久久午夜精品| 久久99精品国产99久久| 国产精品久久久久jk制服| 91精品国产91久久综合| 久久精品国产99国产精品澳门 | 精品一区二区久久久久久久网站| 久久天天躁狠狠躁夜夜avapp |