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; }
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 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; }
IXMLDOMNodePtr GetAttributeNode(IXMLDOMNodePtr node, const _bstr_t& name) { if (node == NULL) return NULL; IXMLDOMNamedNodeMapPtr attributes = node->Getattributes(); if (attributes == NULL) return NULL; IXMLDOMNodePtr att = attributes->getNamedItem(name); return att; }
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; }
void ZXmlParser::GrabNodeInformation( IXMLDOMNodePtr pChild ) { if ( IsMSXML_Node( pChild ) == NODE_ELEMENT ) { // It's a node // Tag Update m_Tag.Format( "<%s>", (const char *)( pChild->nodeName ) ); m_Name = (const char *)( pChild->nodeName ); // TextField no significant value m_TextField.Empty( ); // Update Attribute List m_AttribNames.RemoveAll( ); m_AttribValues.RemoveAll( ); IXMLDOMNamedNodeMapPtr pAttribs = pChild->Getattributes( ); if ( pAttribs ) { long nAttriCnt = pAttribs->Getlength( ); // Iterate over the attributes for( int i=0; i<nAttriCnt; ++i ) { IXMLDOMNodePtr pAttrib = pAttribs->Getitem( i ); if ( pAttrib ) { CString cs = ( const char * ) pAttrib->GetnodeName( ); m_AttribNames.Add( cs ); _variant_t vVal = pAttrib->GetnodeValue ( ); cs = ( const char * ) _bstr_t( vVal ); m_AttribValues.Add( cs ); } } } } else if ( IsMSXML_Node( pChild ) == NODE_TEXT ) { // Tag is #TEXT# m_Tag.Empty( ); m_Tag = "<#TEXT#>"; m_Name.Empty( ); m_Name = "#TEXT#"; // TextField Update m_TextField = (const char *)( pChild->text ); // Update Attribute List have no means m_AttribNames.RemoveAll( ); m_AttribValues.RemoveAll( ); } else if ( IsMSXML_Node( pChild ) == NODE_CDATA_SECTION ) { // Tag is #CDATA# m_Tag.Empty( ); m_Tag = "<#CDATA#>"; m_Name.Empty( ); m_Name = "#CDATA#"; // TextField Update m_TextField = (const char *)( pChild->text ); // Update Attribute List have no means m_AttribNames.RemoveAll( ); m_AttribValues.RemoveAll( ); } else if ( IsMSXML_Node( pChild ) == NODE_PROCESSING_INSTRUCTION ) { // Do nothing here } return; }
/****************************************************************************** Function Name : GetData Input(s) : MSXML2::IXMLDOMNodePtr& pIDomNode Output : HRESULT Functionality : Fill the datastructure from xml node pIDomNode Member of : CVerify_MessageEntity Friend of : - Author(s) : Venkatanarayana Makam, GT-Derka Date Created : 06/04/2011 Modifications : ******************************************************************************/ HRESULT CVerify_MessageEntity::GetData(MSXML2::IXMLDOMNodePtr& pIDomNode) { IXMLDOMNode* pIDOMChildNode; LONG lCount; CComBSTR bstrNodeName; CComVariant NodeValue; CString omstrTemp; CSignalCondition ouSignalCondition; IXMLDOMNamedNodeMapPtr pIDOMAttributes; pIDOMAttributes = pIDomNode->Getattributes();// get_attributes((IXMLDOMNamedNodeMap**)&pIDOMAttributes); //Retrieving Message ID bstrNodeName = def_STR_TCATTRIB_ID; pIDOMAttributes->getNamedItem(bstrNodeName, &pIDOMChildNode); pIDOMChildNode->get_nodeTypedValue(&NodeValue); omstrTemp = strCopyBSTRToCString(NodeValue); m_ouData.m_dwMessageID = atoi((LPCSTR)omstrTemp); m_ouData.m_omMessageName = omstrTemp; if(m_ouDataBaseManager.bIsValidMessageID(m_ouData.m_dwMessageID)== FALSE) { //TODO::INVALID MSG POSSIBLE ONLY WHEN THE FILE IS EDITED WITH NOTEPAD. return -1; } pIDOMChildNode->Release(); //Retrieving Message UNIT bstrNodeName = _(def_STR_TCATTRIB_UNIT); pIDOMAttributes->getNamedItem(bstrNodeName, &pIDOMChildNode); pIDOMChildNode->get_nodeTypedValue(&NodeValue); omstrTemp = strCopyBSTRToCString(NodeValue); if(omstrTemp == "RAW") { m_ouData.m_eSignalUnitType = RAW; } else // else if(omstrTemp == "ENG") { m_ouData.m_eSignalUnitType = ENG; } pIDOMChildNode->Release(); //Retrieving Message Channel bstrNodeName = def_STR_TCATTRIB_CHANNEL; pIDOMAttributes->getNamedItem(bstrNodeName, &pIDOMChildNode); m_ouData.m_byChannelNumber = 0; // set default-value for the case, the number is incorrect or the whole argument is missing if (NULL != pIDOMChildNode) // avoid crash in case XML-file -without channel-information- is loaded { pIDOMChildNode->get_nodeTypedValue(&NodeValue); omstrTemp = strCopyBSTRToCString(NodeValue); m_ouData.m_byChannelNumber = atoi((LPCSTR)omstrTemp); pIDOMChildNode->Release(); } if(m_ouData.m_byChannelNumber == 0) // if casting fails (failure in xml) { m_ouData.m_byChannelNumber = 1; // set default channel */ m_lDefaultChannelUsed = 1; } //Retrieving Signals and their Data IFrame* sMsg; IXMLDOMNodeListPtr pIDOMSignalList; IXMLDOMNode* pIDOMSChildSignal; bstrNodeName = _(def_STR_SIGNAL_NODE); pIDOMSignalList = pIDomNode->selectNodes((_bstr_t)bstrNodeName); pIDOMSignalList->get_length(&lCount); INT nRetVal; nRetVal = m_ouDataBaseManager.nGetMessageName(m_ouData.m_dwMessageID, m_ouData.m_omMessageName); if(nRetVal != S_OK) { return nRetVal; } nRetVal = m_ouDataBaseManager.nGetMessageInfo(m_ouData.m_omMessageName, &sMsg); if ( sMsg == nullptr ) { return nRetVal; } UINT unSignalCount = sMsg->GetSignalCount(); //W4 Removal - Local variable not required //UINT unTSSignalCount = lCount; std::map<ISignal*, SignalInstanse> signalList; sMsg->GetSignalList( signalList); std::string signalName; for (auto signal : signalList ) //for(UINT i = 0; i < unSignalCount; i++) { CSignalCondition ouSignalData, ouTSSignalData; signal.first->GetName( signalName ); ouSignalData.m_omSigName = signalName.c_str(); ouSignalData.m_omCondition = ""; for(int i = 0; i < lCount; i++) { pIDOMSignalList->get_item(i, &pIDOMSChildSignal); vRetrieveConditionSignalValue(pIDOMSChildSignal, ouTSSignalData); if(ouSignalData.m_omSigName == ouTSSignalData.m_omSigName) { ouSignalData.m_omCondition = ouTSSignalData.m_omCondition; break; } } m_ouData.m_odSignalConditionList.AddTail(ouSignalData); } return S_OK; }