void ZXmlParser::ParseObjects( IXMLDOMNodePtr pObject ) { // Child node IXMLDOMNodePtr pChild; // Grab Informations from the pObject node GrabNodeInformation( pObject ); // Update "m_CurrentNode" m_CurrentNode = pObject; // Call User Parse Handling for let him what he want. ParseXML_Document( ); if ( IsMSXML_Node( pObject ) != NODE_ELEMENT ) return; // add the ChainTag ChainTagAdd( m_Tag ); for ( pChild = pObject->firstChild; NULL != pChild; pChild = pChild->nextSibling ) { // Parse Child nodes ParseObjects( pChild ); } // Remove Current Tag from ChainTag ChainTagRemove( 1 ); }
BOOL CVCAMetaParserIXML::ParseMetaData( unsigned char *pMetadata, int nLength ) { pMetadata[nLength] = '\0'; m_pDOMDoc = ixmlParseBuffer((char*)pMetadata); // puts(ixmlPrintDocument(m_pDOMDoc)); if(m_pDOMDoc) { ParseHeader(); ParseStab(); ParseObjects(); ParseEvents(); ParseCounts(); ParseBlobsImp(_XML_TAMPERMAP, &m_TamperInfo); ParseBlobsImp(_XML_SCENECHANGEMAP, &m_SceneChangeInfo); ParseBlobsImp(_XML_BLOBMAP, &m_BlobMap); ParseBlobsImp(_XML_STATBLOBMAP, &m_StationaryMap); ParseBlobsImp(_XML_SMOKEMAP,&m_SmokeMap); ParseBlobsImp(_XML_FIREMAP,&m_FireMap); ParseCE(); ixmlDocument_free(m_pDOMDoc); } else { printf("!!! Parsing Error\n"); } return TRUE; }
void ZXmlParser::LoadXML_FromBuffer( LPCTSTR source ) { // Reset the document ResetXML_Document( ); // Load from Buffer m_plDomDocument->loadXML( source ); m_pDocRoot = m_plDomDocument->documentElement; // Start the Parsing ParseObjects( m_plDomDocument ); // Move to the root node GoToRoot( ); }
void VdkPanel::Create(wxXmlNode *node) { Create(m_Window, GetXrcName(node), GetXrcRect(node)); // VdkTab 附加的 VdkPanel 不需要提供 <rect> 结点, // 因此 VdkPanel 在初始化时 m_Rect 是空的 if (m_Rect.IsEmpty()) { m_Rect = m_parent->GetRect(); m_Rect.x = m_Rect.y = 0; } ParseObjects(VdkCtrlParserInfo(). window(m_Window). node(node). parent(this)); m_gbi = GetXrcGradientBgInfo(node); m_bi = GetXrcBgInfo(node); m_align = GetXrcAlign(node); }
bool ZXmlParser::LoadXML_Document( LPCTSTR strFileName ) { m_LastError = m_ok; // Reset Document ResetXML_Document( ); // Convert xml file name string to something COM can handle (BSTR) CString csFileName = strFileName; _bstr_t bstrFileName; bstrFileName = csFileName.AllocSysString( ); // Call the IXMLDOMDocumentPtr's load function to load the XML document variant_t vResult; vResult = m_plDomDocument->load( bstrFileName ); if ( ((bool) vResult) == TRUE ) // success! { // Now that the document is loaded, we need to initialize the root pointer m_pDocRoot = m_plDomDocument->documentElement; // Now we can Parse this document !! ParseObjects( m_plDomDocument ); GoToRoot( ); return( true ); } else { // XML document is not loaded, return error m_LastError = "XML Document FAILED to load: "; m_LastError += strFileName; return( false ); } }
BOOL CVCAMetaParserMSXML::ParseMetaData( unsigned char *pMetadata, int nLength ) { CComBSTR sz( (char *)pMetadata ); VARIANT_BOOL vb; USES_CONVERSION; pMetadata[nLength] = '\0'; BSTR bstr = SysAllocString( A2W( (char *)pMetadata ) ); // sz = CComBSTR("<?xml version=\"1.0\"?>\n<vca>\n <vca_hdr>\n <frame_id>10</frame_id>\n </vca_hdr>\n</vca>\n"); // TRACE( (char *)pMetadata ); vb = m_pDOMDoc->loadXML( bstr); // FILE *pFile; // pFile = fopen( "C:\\vtmeta.txt", "a" ); // fwrite( pMetadata, strlen( (char *)pMetadata ), 1, pFile ); // fclose( pFile ); if( VARIANT_TRUE == vb ) { // Find the header ParseHeader(); ParseStab(); ParseObjects(); ParseEvents(); ParseCounts(); ParseBlobsImp(_XML_TAMPERMAP, &m_TamperInfo); ParseBlobsImp(_XML_SCENECHANGEMAP, &m_SceneChangeInfo); ParseBlobsImp(_XML_BLOBMAP, &m_BlobMap); ParseBlobsImp(_XML_STATBLOBMAP, &m_StationaryMap); ParseBlobsImp(_XML_SMOKEMAP,&m_SmokeMap); ParseBlobsImp(_XML_FIREMAP,&m_FireMap); ParseCE(); } else { // Loading the doc failed, find out why... MSXML2::IXMLDOMParseErrorPtr pErr = m_pDOMDoc->parseError; CString strLine, sResult; strLine.Format(_T(" ( line %u, column %u )"), pErr->Getline(), pErr->Getlinepos()); // Return validation results in message to the user. if (pErr->errorCode != S_OK) { sResult = CString("Validation failed on ") + CString ("\n=====================") + CString("\nReason: ") + CString( (char*)(pErr->Getreason())) + CString("\nSource: ") + CString( (char*)(pErr->GetsrcText())) + strLine + CString("\n"); ATLTRACE(sResult); // AfxMessageBox( (char *)pMetadata ); } } // memset( pMetadata, NULL, 2048 ); SysFreeString( bstr ); return TRUE; }