티스토리 뷰
BOOL CEzXMLParser::ApplyXSLT(TCHAR* xsltPath, CString& szTransformedText)말그대로 XML 문서를 주어진 입력 위치의 XSLT를 이용해서 변환하여 HTML문서로 변환시켜 주는 소스입니다.
{
szTransformedText.Empty();//////////////////////////////////////////////////////////////////////////
// REFERENCE
// http://www.codeguru.com/Cpp/data/data-misc/xml/article.php/c4565
variant_t vResult;
void *output = NULL;
MSXML2::IXMLDOMDocumentPtr pXslt(__uuidof(FreeThreadedDOMDocument));
IXSLTemplatePtr pTemplate(__uuidof(XSLTemplate));
IXSLProcessorPtr pProcessor;
IStream *pOutStream;
try{
// load xml file with data and xsl file to transform
// xml -> html
vResult = pXslt->load( _bstr_t(_T(xsltPath)) );} catch(_com_error &e) {
TRACE("EzXMLParser : XSLT Load Error");
PrintComError(e);
return FALSE;
}
try{
vResult = pTemplate->putref_stylesheet(pXslt);
pProcessor = pTemplate->createProcessor();
} catch(_com_error &e) {
TRACE("EzXMLParser : Template Creation Error.");
PrintComError( e );
return FALSE;
}
// prepare Stream object to store results of transformation,
// and set processor output to it
CreateStreamOnHGlobal(NULL,TRUE,&pOutStream);
pProcessor->put_output(_variant_t(pOutStream));
// attach to processor XML file we want to transform,
vResult = pProcessor->put_input(_variant_t((IUnknown*)m_pXMLDoc));
pProcessor->transform();//get results of transformation and print them to stdout
HGLOBAL hg = NULL;
pOutStream->Write((void const*)"\0",1,0);
GetHGlobalFromStream(pOutStream,&hg);
output = GlobalLock(hg);szTransformedText.Format( "%s", (const char*)output ); // 실제 저장 루틴
GlobalUnlock(hg);
//release before CoUninitialize()
pXslt.Release();
pTemplate.Release();
pProcessor.Release();return 0;
}
문제는 Charset을 잘 맞춰야합니다. xml은 상당히 charset에 민감해서 있어야하 곳에 이것이 빠진다던가 하면 정상적인 동작을 하지 않습니다.
- Total
- Today
- Yesterday
- 애니메이션
- wow
- 박영창
- World Of Warcraft
- 네트워크
- 와우
- 캐논
- 책
- 리눅스
- 후기
- 시간표
- oracle
- 오라클
- 레포트
- SQL 튜닝
- 프로그래밍
- Japanimation
- 일기
- 오픈 소스 SW와 전략적 활용
- 회식
- hp-ux
- 과제물
- SSM
- HPUX
- 실습으로 배우는 Unix System Admin (HPUX)
- 모임
- 삼성 소프트웨어 멤버십
- 실전! 업무에 바로 쓰는 SQL 튜닝
- 영화
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |