Files
core/ASCOfficeRtfFile/OOXHeaderReader.cpp

45 lines
1.4 KiB
C++

#include "stdafx.h"
#include "OOXHeaderReader.h"
#include "OOXTextItemReader.h"
#include "OOXRelsReader.h"
bool OOXHeaderReader::Parse( ReaderParameter oParam, CString sRID, TextItemContainerPtr& oOutput, bool bHeader )
{
//èùåì ôàéë â rels
CString sRelativeFilename = oParam.oRels->GetByID( sRID );
CString sFilename = oParam.oReader->m_sDocumentPath + _T("\\") + sRelativeFilename;
//ïðîâåðÿåì íàëè÷èå ñîîòâåòñòâóþùèõ rels
CString sRelsPath = oParam.oReader->m_sDocumentPath + _T("\\_rels\\") + sRelativeFilename + _T(".rels");
OOXRelsReaderPtr oRelsReader;
if( ::GetFileAttributes( sRelsPath ) != DWORD(-1) )
{
oRelsReader = OOXRelsReaderPtr( new OOXRelsReader() );
oRelsReader->Init( sRelsPath );
}
oParam.oRels = oRelsReader;
XmlUtils::CXmlReader oXmlReader;
if( TRUE == oXmlReader.OpenFromFile( sFilename ) )
{
if( true == bHeader )
{
oXmlReader.ReadRootNode( _T("w:hdr") );
}
else
{
oXmlReader.ReadRootNode( _T("w:ftr") );
}
OOXTextItemReader oOOXTextItemReader;
oOutput = TextItemContainerPtr( new TextItemContainer() );
oOOXTextItemReader.m_oTextItems = oOutput;
XML::IXMLDOMNodePtr oNode;
oXmlReader.GetNode(oNode);
ReaderParameter oNewParam = oParam;
oNewParam.oNode = oNode;
oOOXTextItemReader.Parse( oNewParam );
return true;
}
return false;
}