コード例 #1
0
ファイル: Xml.cpp プロジェクト: dalinhuang/dmibox
//-------------------------------------------------------------------------
// Function Name    :GetLastError
// Parameter(s)     :void
// Return           :CString
// Memo             :获取最后的出错信息
//-------------------------------------------------------------------------
CString CXml::GetLastError(void)
{
	ASSERT( m_pDoc != NULL );

	HRESULT hr = S_OK;
	MSXML2::IXMLDOMParseErrorPtr pIParseError = NULL;

	hr = m_pDoc->get_parseError(&pIParseError);
	ASSERT( SUCCEEDED(hr) );

	CString strRet;
	if( pIParseError != NULL )
	{
		LONG value;
		BSTR bstr = NULL;
		hr = pIParseError->get_errorCode(&value);
		ASSERT( SUCCEEDED(hr) );

        hr = pIParseError->get_reason(&bstr);
		ASSERT( SUCCEEDED(hr) );

		strRet = (LPCTSTR)_bstr_t( bstr, true);

		if( bstr != NULL )
		{
			SysFreeString(bstr);
			bstr = NULL;
		}	

		SAFE_RELEASE(pIParseError);		
	}

	return strRet;
}
コード例 #2
0
static _bstr_t checkParseError(MSXML2::IXMLDOMParseErrorPtr pError)
{
	_bstr_t parseError =_bstr_t("At line ")+ _bstr_t(pError->Getline()) + _bstr_t("\n")+ _bstr_t(pError->Getreason());
	//MessageBox(NULL,parseError, "Parse Error",MB_OK);
	return parseError;

}
コード例 #3
0
////////////////////////////////////////////////////////////////////////////
// Helper function: Check load results
////////////////////////////////////////////////////////////////////////////
HRESULT CXMLDocument::CheckLoad()
{
	// And since we don't have the VARIANT_BOOL from load we
	// need to check the parse Error errorCode property to see
	// if everything went ok.
	MSXML2::IXMLDOMParseErrorPtr pXMLError = NULL;
	HRESULT hr = m_pDoc->get_parseError(&pXMLError);
	hr = CheckHR(hr, "getting parse error");

	long lErrorCode = NULL;
	if (pXMLError)
	{
		hr = pXMLError->get_errorCode(&lErrorCode);
		hr = CheckHR(hr, "getting error code");
		if (lErrorCode)
			hr = ReportError(pXMLError);
	}

	return lErrorCode;
}
コード例 #4
0
ファイル: Xml.cpp プロジェクト: KnowNo/test-code-backup
//-------------------------------------------------------------------------
// Function Name    :GetLastError
// Parameter(s)     :void
// Return           :CString
// Memo             :获取最后的出错信息
//-------------------------------------------------------------------------
CString CXml::GetLastError(void) const
{
	ASSERT(m_pDoc != NULL);

	HRESULT hr = S_OK;
	MSXML2::IXMLDOMParseErrorPtr pIParseError = NULL;

	hr = m_pDoc->get_parseError(&pIParseError);
	ASSERT(SUCCEEDED(hr));

	CString strRet;
	if(pIParseError != NULL)
	{
		BSTR bstr = NULL;
        hr = pIParseError->get_reason(&bstr);
		ASSERT(SUCCEEDED(hr));

		strRet = (LPCTSTR)_bstr_t(bstr, false);

		RELEASE_PTR(pIParseError);		
	}

	return strRet;
}
コード例 #5
0
ファイル: IconImgList.cpp プロジェクト: sayrun/SOboe
BOOL CIconImgList::LoadExtIconData( void)
{
    // 通常アイコンの読み込み
    m_hBmpDefault = ::LoadBitmap( AfxGetResourceHandle(), MAKEINTRESOURCE( IDB_ICONIMG));

    TCHAR szFilePath[ MAX_PATH];
    int nLength = GetModuleFileName( NULL, szFilePath, MAX_PATH);
    for( int nIndex = nLength; nIndex >= 0; nIndex--)
    {
        if( TEXT( '\\') == szFilePath[ nIndex])
        {
            lstrcpy( &szFilePath[ nIndex + 1], TEXT( "GetIcon.xml"));
            break;
        }
    }


    BOOL blResult = FALSE;
    MSXML2::IXMLDOMDocumentPtr piDocument;
    if( SUCCEEDED( piDocument.CreateInstance( _T( "Microsoft.XMLDOM"))))
    {
        piDocument->PutvalidateOnParse( VARIANT_TRUE);
        if( VARIANT_FALSE != piDocument->load( _variant_t( _bstr_t( szFilePath))))
        {
            if( LoadIcons( piDocument))
            {
                blResult = LoadGroups( piDocument);
            }
        }
        else
        {
            MSXML2::IXMLDOMParseErrorPtr piError;

            piError = piDocument->GetparseError();
            long lCode = piError->GeterrorCode();
            TRACE( _T( "0x%08X\n"), lCode);	// 0x800C0005

            if( NULL != piError && 0 != lCode && 0x800C0005/*INET_E_RESOURCE_NOT_FOUND*/ != lCode)
            {
                long lRaw = piError->Getline();
                long lCol = piError->Getlinepos();

                _bstr_t cBstr = piError->Getreason();
                _bstr_t cBstrSrc = piError->GetsrcText();

                CString cStr;

                cStr.Format( _T( "拡張アイコンデータファイルを解析できませんでした。\n%s\n\nソース:%s\n位置:%d行 %d文字"), ( ( char*)cBstr), ( ( char*)cBstrSrc), lRaw, lCol);
                MessageBox( NULL, cStr, NULL, MB_OK | MB_ICONEXCLAMATION);
            }
        }
    }
    return blResult;
}
コード例 #6
0
ファイル: VCAMetaParserMSXML.cpp プロジェクト: anyboo/UCADemo
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;
}
コード例 #7
0
ファイル: CoExtender.cpp プロジェクト: anyboo/UCADemo
BOOL CoExtender::ParseSettings()
{
	BOOL bOk = FALSE;
	VARIANT_BOOL vb;
	USES_CONVERSION;
	struct _stat64i32 statInfo;
	

	if( 0 == _tstat( SETTINGS_FILE, &statInfo ) )
	{
		vb = m_pDOMDoc->load( SETTINGS_FILE );
	}
	else
	{
		CString s;
		s.Format( _T("Unable to load settings file: %s"), SETTINGS_FILE );
		AfxMessageBox( s );
		return FALSE;
	}

	if( VARIANT_TRUE == vb )
	{
		// Parse config file location
		MSXML2::IXMLDOMNodePtr	pNode, pSubNode;

		BSTR bsTag = CComBSTR( "root/config_file" );

		pNode = m_pDOMDoc->selectSingleNode( (BSTR) bsTag );

		if( pNode )
		{
			m_sConfigFile = (char *)pNode->text;
		}
		else
		{
			AfxMessageBox( _T("Config file not specified in extender config XML file") );
		}

		// Video settings
		bsTag = CComBSTR( "root/video_src" );
			pNode = m_pDOMDoc->selectSingleNode( (BSTR) bsTag );
		if( pNode )
		{
			bsTag = CComBSTR( "type" );
			pSubNode = pNode->selectSingleNode( (BSTR) bsTag );

			if( pSubNode )
			{
				if( 0 == strcmp( pSubNode->text, "dshow" ) )	m_eVideoType = VIDEO_DSHOW;
				else if( 0 == strcmp( pSubNode->text, "vlc" ) )	m_eVideoType = VIDEO_VLC;
				else if( 0 == strcmp( pSubNode->text, "cap5" ) )m_eVideoType = VIDEO_CAP5;
				else m_eVideoType = VIDEO_NULL;
			}

			bsTag = CComBSTR( "data" );
			pSubNode = pNode->selectSingleNode( (BSTR) bsTag );
			if( pSubNode )
			{
				m_sVideoData = (char *) pSubNode->text;
			}


			bsTag = CComBSTR( "stream_video" );
			pSubNode = pNode->selectSingleNode( (BSTR) bsTag );
			if( pSubNode )
			{
				int i = atoi( pSubNode->text );
				m_bVideo = i > 0 ? TRUE : FALSE;
			}

			bsTag = CComBSTR( "stream_meta" );
			pSubNode = pNode->selectSingleNode( (BSTR) bsTag );
			if( pSubNode )
			{
				int i = atoi( pSubNode->text );
				m_bMeta = i > 0 ? TRUE : FALSE;
			}
		}

		// local VCA settings
		bsTag = CComBSTR( "root/local_vca" );
		pNode = m_pDOMDoc->selectSingleNode( (BSTR) bsTag );
		if( pNode )
		{
			bsTag = CComBSTR( "license" );
			pSubNode = pNode->selectSingleNode( (BSTR) bsTag );

			if( pSubNode )
			{
				strcpy_s( m_sLicense, _countof( m_sLicense ), T2A( pSubNode->text ) );
			}
		}

		bOk = TRUE;

	}
	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( sResult );


		}
	}

	return bOk;

}