BOOL vmsMetalinkFile::ReadUrlNode(IXMLDOMNode *pNode, vmsMetalinkFile_File_Url *url) { USES_CONVERSION; IXMLDOMNamedNodeMapPtr spAttrs; pNode->get_attributes (&spAttrs); if (spAttrs == NULL) return FALSE; IXMLDOMNodePtr spType; spAttrs->getNamedItem (L"type", &spType); if (spType == NULL) return FALSE; COleVariant vt; spType->get_nodeValue (&vt); ASSERT (vt.vt == VT_BSTR); if (vt.vt == VT_BSTR) url->strProtocol = W2A (vt.bstrVal); CComBSTR bstrText; pNode->get_text (&bstrText); if (bstrText.Length () == 0) return FALSE; url->strUrl = W2A (bstrText); return TRUE; }
BOOL vmsMetalinkFile::ReadHashNode(IXMLDOMNode *pNode, vmsMetalinkFile_File_Hash *hash) { USES_CONVERSION; IXMLDOMNamedNodeMapPtr spAttrs; pNode->get_attributes (&spAttrs); if (spAttrs == NULL) return FALSE; IXMLDOMNodePtr spType; spAttrs->getNamedItem (L"type", &spType); if (spType == NULL) return FALSE; COleVariant vt; spType->get_nodeValue (&vt); ASSERT (vt.vt == VT_BSTR); if (vt.vt == VT_BSTR) hash->strAlgorithm = W2A (vt.bstrVal); CComBSTR bstrText; pNode->get_text (&bstrText); if (bstrText.Length () == 0) return FALSE; hash->strChecksum = W2A (bstrText); return TRUE; }
VARIANT XMLDoc::getVariant(const XMLNodePtr &node, const TCHAR *tagName, int instans) { VARIANT result; result.vt = NULL; if(node!=NULL) { int i=0; for(XMLNodePtr p = node->firstChild; p != NULL; p = p->nextSibling) { if(p->nodeType==NODE_ELEMENT && _tcsicmp(((XMLElementPtr)p)->tagName,tagName) == 0 && i++ == instans) { IXMLDOMNodeListPtr childList = p->childNodes; LONG length; childList->get_length(&length); for(int j = 0; j < length; j++) { IXMLDOMNodePtr item; childList->get_item(j, &item); DOMNodeType itemType; item->get_nodeType(&itemType); if(itemType == NODE_TEXT) { item->get_nodeValue(&result); return result; } } return result; } } } return result; }
BOOL CSkinClass::LoadPropertyFromXml(IXMLDOMNodePtr ptrNode) { IXMLDOMNodePtr pNode = NULL; IXMLDOMNamedNodeMapPtr pNamedNodeMap = NULL; DOMNodeType nodeType = NODE_INVALID; long len = 0; BOOL allSuc = TRUE; ptrNode->get_attributes(&pNamedNodeMap); pNamedNodeMap->get_length(&len); for (int i=0; i<len; i++){ pNamedNodeMap->get_item(i, &pNode); pNode->get_nodeType(&nodeType); if (nodeType != NODE_ATTRIBUTE) continue; CComBSTR bstrName; CComVariant varValue; pNode->get_nodeName(&bstrName); pNode->get_nodeValue(&varValue); if (varValue.vt != VT_BSTR) continue; CString strName = bstrName; CString strValue = varValue.bstrVal; if (strName.CompareNoCase(_T("name")) != 0) { SetProp(strName, strValue); } else { ASSERT(m_strClassName.IsEmpty()); SetClassName(strValue); } } return allSuc; }
BOOL vmsVideoSiteHtmlCodeParser::Parse_Further_MySpace(LPCSTR pszHtml) { USES_CONVERSION; IXMLDOMDocumentPtr spXML; IXMLDOMNodePtr spNode, spNode2; while (*pszHtml && *pszHtml != '<') pszHtml++; spXML.CreateInstance (__uuidof (DOMDocument)); if (spXML == NULL) return FALSE; spXML->put_async (FALSE); VARIANT_BOOL bRes; spXML->loadXML (A2W (pszHtml), &bRes); if (bRes == FALSE) return FALSE; spXML->selectSingleNode (L"rss", &spNode); if (spNode == NULL) return FALSE; spNode->selectSingleNode (L"channel", &spNode2); if (spNode2 == NULL) return FALSE; spNode = NULL; spNode2->selectSingleNode (L"item", &spNode); if (spNode == NULL) return FALSE; spNode2 = NULL; spNode->selectSingleNode (L"title", &spNode2); if (spNode2 == NULL) return FALSE; CComBSTR bstrTitle; spNode2->get_text (&bstrTitle); spNode2 = NULL; spNode->selectSingleNode (L"media:content", &spNode2); if (spNode2 == NULL) return FALSE; IXMLDOMNamedNodeMapPtr spAttrs; spNode2->get_attributes (&spAttrs); if (spAttrs == NULL) return FALSE; IXMLDOMNodePtr spUrlValue; spAttrs->getNamedItem (L"url", &spUrlValue); if (spUrlValue == NULL) return FALSE; COleVariant vtUrl; spUrlValue->get_nodeValue (&vtUrl); ASSERT (vtUrl.vt == VT_BSTR); if (vtUrl.vt != VT_BSTR) return FALSE; m_strVideoTitle = W2A (bstrTitle); fsDecodeHtmlText (m_strVideoTitle); m_strVideoUrl = W2A (vtUrl.bstrVal); m_strVideoType = (LPCSTR)m_strVideoUrl + m_strVideoUrl.GetLength () - 3; m_bDirectLink = TRUE; return TRUE; }
BOOL vmsMetalinkFile::ReadFileNode(IXMLDOMNode *pFile) { USES_CONVERSION; IXMLDOMNodeListPtr spNodeList; pFile->get_childNodes (&spNodeList); if (spNodeList == NULL) return FALSE; vmsMetalinkFile_File file; IXMLDOMNamedNodeMapPtr spAttrs; pFile->get_attributes (&spAttrs); if (spAttrs != NULL) { IXMLDOMNodePtr spFileName; spAttrs->getNamedItem (L"name", &spFileName); if (spFileName != NULL) { COleVariant vt; spFileName->get_nodeValue (&vt); ASSERT (vt.vt == VT_BSTR); if (vt.vt == VT_BSTR) file.strName = W2A (vt.bstrVal); } } IXMLDOMNodePtr spItem; while (SUCCEEDED (spNodeList->nextNode (&spItem)) && spItem != NULL) { CComBSTR bstrName; spItem->get_nodeName (&bstrName); if (bstrName == L"verification") { ReadVerificationNode (spItem, &file); } else if (bstrName == L"resources") { ReadResourcesNode (spItem, &file); } else if (bstrName == L"os") { CComBSTR bstrText; spItem->get_text (&bstrText); file.strOS = W2A (bstrText); } spItem = NULL; } if (file.vMirrors.size () == 0) return FALSE; m_vFiles.add (file); return TRUE; }