亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? xmlbase.cpp

?? Xerces-C++應用實例
?? CPP
字號:
// ================================================================================
//
//    author:         Rainer Schuster
//
//    created:        09.03.2005 10:20:45
//
//    filename:       xmlbase.cpp    IMPLEMENTATION
//
//    This code is as it is. You are allowed to use, modify and/or redistribute it freely.
//    I'm not responsible for any errors or damage. Use it at your own risk.
//
// ================================================================================




#include "stdafx.h"
#include "xmlbase.h"

#include <xercesc/util/PlatformUtils.hpp>
#include <xercesc/parsers/AbstractDOMParser.hpp>
#include <xercesc/dom/DOMImplementation.hpp>
#include <xercesc/dom/DOMImplementationLS.hpp>
#include <xercesc/dom/DOMImplementationRegistry.hpp>
#include <xercesc/dom/DOMBuilder.hpp>
#include <xercesc/dom/DOMException.hpp>
#include <xercesc/dom/DOMDocument.hpp>
#include <xercesc/dom/DOMNodeList.hpp>
#include <xercesc/dom/DOMError.hpp>
#include <xercesc/dom/DOMLocator.hpp>
#include <xercesc/dom/DOMNamedNodeMap.hpp>
#include <xercesc/dom/DOMAttr.hpp>

#include <string>


XMLBaseErrorHandler ::XMLBaseErrorHandler () :

    fSawErrors(false)
{
}

XMLBaseErrorHandler ::~XMLBaseErrorHandler ()
{
}


// ---------------------------------------------------------------------------
//  XMLBaseErrorHandler: Overrides of the DOM ErrorHandler interface
// ---------------------------------------------------------------------------
bool XMLBaseErrorHandler ::handleError(const DOMError& domError)
{
    fSawErrors = true;
    if (domError.getSeverity() == DOMError::DOM_SEVERITY_WARNING)
        AfxMessageBox( "Warning at file ");
    else if (domError.getSeverity() == DOMError::DOM_SEVERITY_ERROR)
        AfxMessageBox( "Error at file ");
    else
        AfxMessageBox( "Fatal Error at file ");

	CString strErr;
	
	strErr.Format(	"%s, line %i, char %i\n  Message: %s", 
					XC(domError.getLocation()->getURI()),
					domError.getLocation()->getLineNumber(),
					domError.getLocation()->getColumnNumber(),
					XC(domError.getMessage()) );

    return true;
}

void XMLBaseErrorHandler ::resetErrors()
{
    fSawErrors = false;
}



void CXMLGrid::Parse( DOMDocument *doc, const char* lpcszID)
{
	DOMNode *row;
    int count = 0;
    if (doc)
	{				
        if (doc->getNodeType() == DOMNode::DOCUMENT_NODE)
		{
			DOMNode	*node = doc->getFirstChild();
			while( node )
			{
				if( strcmp( XC(node->getNodeName()), "XMLGRID") == 0)
				{
					ParseAttributes( node);

					if( strcmp(lpcszID, m_strID) == 0)
					{
						row = node->getFirstChild();
						while( row )
						{
							if( strcmp( XC(row->getNodeName()), "row") == 0 )
							{
								ParseRow( row);
							}
							else
							if( strcmp( XC(row->getNodeName()), "header") == 0 )
							{
								ParseHeader( row);
							}
							else
							{
								OnUnknownAttribute( row);
							}
							row = row->getNextSibling();
						}
					}
				}
				node = node->getNextSibling();
			}

		}
	}
}

void CXMLGrid::ParseAttributes( DOMNode *node)
{
	static char cAttrib[32768]; //32K
	if( GetAttributeValue( node, "id", cAttrib, sizeof(cAttrib)) )
		m_strID = cAttrib;
	
	if( GetAttributeValue( node, "label", cAttrib, sizeof(cAttrib)) )
		m_strLabel = cAttrib;

	if( GetAttributeValue( node, "icons", cAttrib, sizeof(cAttrib)) )
		m_strIcons = cAttrib;
}

void CXMLGrid::OnUnknownAttribute( DOMNode *row)
{
}

void CXMLGrid::ParseHeader( DOMNode *row)
{
	long lId;
	DOMNode *col_definition = row->getFirstChild();
	m_header.m_lIndex = 0;
	while( col_definition )
	{
		if( GetAttributeValue( col_definition, "id", lId) )
		{
			m_header.Insert( lId, XC( col_definition->getTextContent()) );
		}
		col_definition = col_definition->getNextSibling();
	}
}

void CXMLGrid::ParseRow( DOMNode *row)
{
	CXMLGridRow rowdata;
	GetAttributeValue( row, "index", rowdata.m_lIndex );

	// Spalten Parsen!!
	DOMNode *col = row->getFirstChild();
	while( col )
	{
		if( strcmp( XC(col->getNodeName()), "col") == 0 )
		{
			ParseCol( col, rowdata);
		}

		col = col->getNextSibling();
	}
	if( rowdata.m_pCols->size() )
	{
		m_rows.insert( CXMLGridDataPair(m_lRowCount++, rowdata) );
	}
}

void CXMLGrid::ParseCol( DOMNode *col, CXMLGridRow &rowdata)
{
	long lId;
	if( GetAttributeValue( col, "id", lId) )
		rowdata.Insert( lId, XC(col->getTextContent()) );
//	if( GetAttributeValue( col, "width", lId) )
		//TODO:
}


bool CXMLBase::Init(const char* lpcszXMLFile, const char *lpcszID)
{
	const char*						xmlFile				= lpcszXMLFile;
	AbstractDOMParser::ValSchemes	valScheme			= AbstractDOMParser::Val_Auto;
	bool							doNamespaces		= false;
	bool							doSchema			= false;
	bool							schemaFullChecking	= false;
	bool							doList				= false;
	bool							errorOccurred		= false;
	bool							recognizeNEL		= false;
	bool							printOutEncounteredEles = false;
	char							localeStr[64];
	XMLBaseErrorHandler 			errorHandler;

	memset(localeStr, 0, sizeof localeStr);

	// Initialize the XML4C system
    try
    {
        if (strlen(localeStr))
        {
            XMLPlatformUtils::Initialize(localeStr);
        }
        else
        {
            XMLPlatformUtils::Initialize();
        }

        if (recognizeNEL)
        {
            XMLPlatformUtils::recognizeNEL(recognizeNEL);
        }
    }
	catch (const XMLException& toCatch)
    {
		AfxMessageBox(  XC(toCatch.getMessage()) ); 
		return false;
    }

	 // Instantiate the DOM parser.
    static const XMLCh gLS[] = { chLatin_L, chLatin_S, chNull };
    DOMImplementation *impl = DOMImplementationRegistry::getDOMImplementation(gLS);
    DOMBuilder        *parser = ((DOMImplementationLS*)impl)->createDOMBuilder(DOMImplementationLS::MODE_SYNCHRONOUS, 0);

	parser->setFeature(XMLUni::fgDOMNamespaces, doNamespaces);
    parser->setFeature(XMLUni::fgXercesSchema, doSchema);
    parser->setFeature(XMLUni::fgXercesSchemaFullChecking, schemaFullChecking);

	XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument *doc = 0;

	unsigned long duration;
	try
	{
		// reset document pool
		parser->resetDocumentPool();

		const unsigned long startMillis = XMLPlatformUtils::getCurrentMillis();
		doc = parser->parseURI(xmlFile);
		const unsigned long endMillis = XMLPlatformUtils::getCurrentMillis();
		duration = endMillis - startMillis;
	}

	catch (const XMLException& toCatch)
	{
		AfxMessageBox( XC(toCatch.getMessage()) );
		errorOccurred = true;
		return false;
	}
	catch (const DOMException& toCatch)
	{
		const unsigned int maxChars = 2047;
        XMLCh errText[maxChars + 1];
		CString strErr;

		strErr.Format( "DOM Error during parsing: '%s'; DOMException code is: %i", xmlFile, toCatch.code);
        if (DOMImplementation::loadDOMExceptionMsg(toCatch.code, errText, maxChars))
		{
             strErr += "Message is: ";
			 strErr	+= XC(errText);
		}

        errorOccurred = true;
	}
	catch (...)
	{
		AfxMessageBox ("Unerwartete Ausnahme beim Parsen");
		errorOccurred = true;
		return false;
	}

	if (errorHandler.getSawErrors())
	{
		AfxMessageBox( "Errors occurred, no output available");
		errorOccurred = true;
		return false;
	}
	else
	{
		//jetzt k鰊nen wir parsen!!
		if (doc) 
		{
			Parse( doc, lpcszID);
		}		
	}

	parser->release();

    // And call the termination method
    XMLPlatformUtils::Terminate();


	return true;
}


BOOL LoadIcon( CString strIcon2Load, CString strPath, CPictureMap *map)
{
	BOOL bReturn = FALSE;
	if( !strPath.IsEmpty() )
	{		
		TCHAR cLast = strPath.GetAt( strPath.GetLength()-1);
		if(		cLast != '\\'
			||	cLast != '/'
		  )
		{
			strPath += "\\";
		}			

		LPPICTURE pPict=NULL;
		CSize	size;
		bReturn = LoadPictureFile( strPath + strIcon2Load, &pPict);
		
		map->insert( CPicturePair( strIcon2Load, pPict ));
	}

	return bReturn;
}

BOOL LoadPictureFile(LPCTSTR szFile, LPPICTURE* pgpPicture)
{
    // open file
    HANDLE hFile = CreateFile(szFile,
                              GENERIC_READ,
                              0,
                              NULL,
                              OPEN_EXISTING,
                              0,
                              NULL);

    if (hFile == INVALID_HANDLE_VALUE)
    {
        AfxMessageBox ("Could not read file");
        return FALSE;
    }

    // get file size
    DWORD dwFileSize = GetFileSize(hFile, NULL);

    if (dwFileSize == (DWORD)-1)
    {
        CloseHandle(hFile);
        AfxMessageBox ("File seems to be empty");
        return FALSE;
    }

    LPVOID pvData = NULL;

    // alloc memory based on file size
    HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, dwFileSize);

    if (hGlobal == NULL)
    {
        CloseHandle(hFile);
        AfxMessageBox ("Could not allocate memory for image");
        return FALSE;
    }

    pvData = GlobalLock(hGlobal);

    if (pvData == NULL)
    {
        GlobalUnlock(hGlobal);
        CloseHandle(hFile);
        AfxMessageBox ("Could not lock memory for image");
        return FALSE;
    }

    DWORD dwBytesRead = 0;

    // read file and store in global memory
    BOOL bRead = ReadFile(hFile,
                          pvData,
                          dwFileSize,
                          &dwBytesRead,
                          NULL);

    GlobalUnlock(hGlobal);
    CloseHandle(hFile);

    if (!bRead)
    {
        AfxMessageBox ("Could not read file");
        return FALSE;
    }

    LPSTREAM pstm = NULL;

    // create IStream* from global memory
    HRESULT hr = CreateStreamOnHGlobal(hGlobal,
                                       TRUE,
                                       &pstm);

    if (!(SUCCEEDED(hr)))
    {
        AfxMessageBox ("CreateStreamOnHGlobal() failed");

        if (pstm != NULL)
            pstm->Release();
            
        return FALSE;
    }

    else if (pstm == NULL)
    {
        AfxMessageBox ("CreateStreamOnHGlobal() failed");
        return FALSE;
    }

	// Create IPicture from image file
	if (*pgpPicture)
		(*pgpPicture)->Release();

    hr = ::OleLoadPicture(pstm,
                          dwFileSize,
                          FALSE,
                          IID_IPicture,
                          (LPVOID *)&(*pgpPicture));

    if (!(SUCCEEDED(hr)))
    {
    	pstm->Release();
        AfxMessageBox("Could not load image (hr failure)");
        return FALSE;
    }

    else if (*pgpPicture == NULL)
    {
    	pstm->Release();
        AfxMessageBox("Could not load image (pgpPicture failure)");
        return FALSE;
    }

    pstm->Release();

    return TRUE;  //Made it ...!
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
免费人成黄页网站在线一区二区| 9191久久久久久久久久久| 精品国精品自拍自在线| 日韩有码一区二区三区| 色爱区综合激月婷婷| 精品久久五月天| 亚洲chinese男男1069| 91成人免费在线| 一区二区在线观看视频| 色婷婷精品大在线视频| 最新国产の精品合集bt伙计| yourporn久久国产精品| 国产精品入口麻豆九色| 欧美一区二区视频网站| 国产亚洲精品超碰| 粉嫩蜜臀av国产精品网站| 欧美激情一区二区三区全黄| 夫妻av一区二区| 日韩久久一区二区| 欧美唯美清纯偷拍| 日韩av二区在线播放| 久久夜色精品国产噜噜av| 精品一区中文字幕| 欧美激情一区二区| 欧美吞精做爰啪啪高潮| 香蕉成人伊视频在线观看| 欧美成人一区二区三区| 国产成人一区在线| 亚洲精品你懂的| 欧美日韩国产美女| 国产成人免费高清| 亚洲自拍偷拍九九九| 日韩一区二区三区四区五区六区| 国产在线观看免费一区| 中文字幕乱码亚洲精品一区 | 99国产精品久久久久| 爽好久久久欧美精品| 国产午夜一区二区三区| 欧美性videosxxxxx| 国产成人一区在线| 日韩高清不卡一区二区三区| 欧美激情在线一区二区三区| 欧美日韩国产综合一区二区| 国产电影精品久久禁18| 日产国产欧美视频一区精品 | 美女久久久精品| 亚洲国产精品一区二区www在线| 国产亚洲制服色| 69久久夜色精品国产69蝌蚪网| 成人国产亚洲欧美成人综合网| 欧美a级一区二区| 亚洲女厕所小便bbb| 久久综合色天天久久综合图片| 欧美日韩精品一区二区天天拍小说| 国产69精品久久777的优势| 天堂va蜜桃一区二区三区漫画版| 亚洲天堂精品视频| 国产日韩欧美精品在线| 欧美不卡一区二区三区| 欧美一区二区三区四区久久| 欧美综合一区二区三区| 色一区在线观看| 成人av网在线| 99这里只有精品| 91年精品国产| 91国偷自产一区二区开放时间| 99久久99久久精品免费观看| 成人午夜电影网站| 色婷婷精品久久二区二区蜜臂av | 欧美一区二区三区婷婷月色 | 欧美日韩国产a| 欧美色综合天天久久综合精品| 色婷婷av一区二区三区大白胸| 色综合天天在线| 91精品福利视频| 91精品国产综合久久精品麻豆| 日韩三级免费观看| 久久欧美中文字幕| 国产精品欧美一级免费| 亚洲一区二区免费视频| 日日摸夜夜添夜夜添亚洲女人| 丝袜美腿高跟呻吟高潮一区| 久久99国产精品成人| 国产精品亚洲一区二区三区在线 | 亚洲www啪成人一区二区麻豆| 亚洲乱码中文字幕综合| 日韩精品一二三区| 国产精一品亚洲二区在线视频| 成人免费毛片嘿嘿连载视频| 欧美日韩国产综合视频在线观看| 欧美一区二区三区思思人| 国产欧美日韩麻豆91| 一区二区三区四区蜜桃| 国产专区综合网| 欧美老年两性高潮| 久久蜜桃av一区二区天堂| 综合中文字幕亚洲| 久久精品国产色蜜蜜麻豆| av在线不卡免费看| 欧美一区日韩一区| 亚洲女厕所小便bbb| 开心九九激情九九欧美日韩精美视频电影| 国产精品一卡二卡| 欧美蜜桃一区二区三区| 亚洲国产精品v| 老鸭窝一区二区久久精品| 日本高清免费不卡视频| 国产欧美一区二区精品性色超碰 | 亚洲欧美日韩中文播放 | 天堂蜜桃91精品| 91麻豆国产香蕉久久精品| 日韩视频在线观看一区二区| 亚洲黄色小视频| 99久久综合国产精品| 久久综合资源网| 久久国产精品72免费观看| 欧美性videosxxxxx| 成人欧美一区二区三区视频网页| 久久不见久久见免费视频1| 日韩欧美一区二区久久婷婷| 蜜桃av噜噜一区二区三区小说| 91丨九色丨国产丨porny| 国产精品夫妻自拍| 9久草视频在线视频精品| 日本一区二区久久| 国产99久久精品| 中文字幕 久热精品 视频在线| 国产成人综合视频| 久久综合九色综合欧美就去吻 | 日韩一区二区三区观看| 天堂影院一区二区| 在线成人免费视频| 久国产精品韩国三级视频| 26uuu精品一区二区| 国产麻豆视频一区二区| 国产女人水真多18毛片18精品视频 | 99久精品国产| 夜夜揉揉日日人人青青一国产精品| 欧美最新大片在线看| 日韩av电影天堂| 久久久久久久久一| av爱爱亚洲一区| 日本中文一区二区三区| 日韩欧美一级在线播放| 国产一区三区三区| 自拍偷拍国产精品| 91精品国产麻豆国产自产在线| 老司机精品视频一区二区三区| 国产婷婷一区二区| 欧美揉bbbbb揉bbbbb| 国产麻豆精品久久一二三| 亚洲专区一二三| 久久久久国产精品厨房| 在线观看一区日韩| 国产在线一区观看| 亚洲大型综合色站| 欧美韩国一区二区| 日韩欧美国产午夜精品| 99视频精品在线| 韩国三级电影一区二区| 亚洲高清免费一级二级三级| 久久久久国产成人精品亚洲午夜| 欧美性色黄大片| 91原创在线视频| 国产91在线观看丝袜| 免费成人性网站| 亚洲国产精品久久人人爱| 亚洲色图欧美在线| 国产目拍亚洲精品99久久精品| 欧美一区二区三区四区高清| 91高清视频免费看| 91丨九色porny丨蝌蚪| 国产成人亚洲综合a∨婷婷图片| 免费看欧美美女黄的网站| 一区二区在线电影| 国产精品传媒入口麻豆| 中文字幕av一区二区三区| 日本一区二区电影| 国产欧美一区二区三区在线老狼| 日韩欧美专区在线| 91麻豆精品国产自产在线| 99vv1com这只有精品| 99re成人精品视频| 色综合久久久久久久久| 99riav一区二区三区| 99精品桃花视频在线观看| 国产一区不卡视频| 九九**精品视频免费播放| 免费精品视频最新在线| 蜜桃久久久久久| 另类综合日韩欧美亚洲| av一二三不卡影片| 国内外成人在线| 不卡在线视频中文字幕| 91视频国产观看| 91亚洲大成网污www| 一本色道久久综合狠狠躁的推荐| 色综合色综合色综合 | 国产精品亚洲第一| 精品无人码麻豆乱码1区2区|