Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.15.221.67] |
|
Сообщ.
#1
,
|
|
|
Подскажите, как инициализировать и использовать XML парсер из под WinCE 3.0 ?
|
Сообщ.
#2
,
|
|
|
А делается это вот так
CComPtr<IXMLDOMDocument> pXMLDoc; CComVariant varFileName = "//somehost/somedir/somefile.xml"; if ( pXMLDoc.CoCreateInstance(__uuidof (DOMDocument), NULL, CLSCTX_INPROC_SERVER)!=S_OK ) { AfxMessageBox(_T( "Can't Create Instance of DOMDocument" )); return -1; } CComQIPtr<IObjectSafety, &IID_IObjectSafety> pSafety(pXMLDoc); DWORD dwSupported, dwEnabled; pSafety->GetInterfaceSafetyOptions( IID_IXMLDOMDocument, &dwSupported, &dwEnabled ); pSafety->SetInterfaceSafetyOptions( IID_IXMLDOMDocument, dwSupported, 0 ); pXMLDoc->put_validateOnParse(VARIANT_FALSE); pXMLDoc->put_resolveExternals(VARIANT_FALSE); pXMLDoc->put_preserveWhiteSpace(VARIANT_FALSE); pXMLDoc->put_async(VARIANT_FALSE); VARIANT_BOOL vSuccess; if ( pXMLDoc->load(varFileName,&vSuccess)!=S_OK ) { AfxMessageBox(_T("Can't load xml")); return -1; } |
Сообщ.
#3
,
|
|
|
2vadim_vk, будешь главным по XML , а то тут никто ничего не знает шутка.
|
Сообщ.
#4
,
|
|
|
А вот так оно парсится. Ну вдруг кому-нибудь пригодится.
CComPtr<IXMLDOMElement> pDocElement; if ( pXMLDoc->get_documentElement(&pDocElement)!=S_OK ) { AfxMessageBox(_T("Can't get document element")); return -1; } typedef CComPtr<IXMLDOMNodeList> IXMLDOMNodeListPtr; typedef CComPtr<IXMLDOMNode> IXMLDOMNodePtr; IXMLDOMNodeListPtr pNodeList; HRESULT hr = pXMLDoc->selectNodes( _T("//ITEM/SUBITEM"), &pNodeList ); if ( SUCCEEDED( hr )) { long lLen = 0; hr = pNodeList->get_length(&lLen); if ( SUCCEEDED( hr )) { for (int i = 0; i < lLen; i++) { IXMLDOMNodePtr pNode; pNodeList->get_item(i,&pNode); // Get some attribute as an example COleVariant vNodeValue; IXMLDOMElement *pNodeElm = NULL; hr = pNode->QueryInterface( IID_IXMLDOMElement, (void**)&pNodeElm ); if ( SUCCEEDED( hr )) { pNodeElm->getAttribute( L"attr1",&vNodeValue ); ......... pNodeElm->getAttribute( L"attr2",&vNodeValue ); ......... pNodeElm->Release(); } } } |