This commit is contained in:
Elena Subbotina
2022-11-12 17:10:25 +03:00
parent 3c570883e0
commit 1e7c85d310
7 changed files with 201 additions and 193 deletions

View File

@ -53,14 +53,14 @@ namespace OOX
int nCurDepth = oReader.GetDepth(); int nCurDepth = oReader.GetDepth();
while (oReader.ReadNextSiblingNode(nCurDepth)) while (oReader.ReadNextSiblingNode(nCurDepth))
{ {
std::wstring sName = oReader.GetName(); std::wstring sName = XmlUtils::GetNameNoNS(oReader.GetName());
if (L"w:drawing" == sName) if (L"drawing" == sName)
{ {
m_oDrawing = new OOX::Logic::CDrawing(m_pMainDocument); m_oDrawing = new OOX::Logic::CDrawing(m_pMainDocument);
m_oDrawing->fromXML(oReader); m_oDrawing->fromXML(oReader);
} }
else if (L"v:background" == sName) else if (L"background" == sName)
{ {
m_oBackground = OOX::Vml::CBackground(m_pMainDocument); m_oBackground = OOX::Vml::CBackground(m_pMainDocument);
m_oBackground->fromXML(oReader); m_oBackground->fromXML(oReader);
@ -133,24 +133,24 @@ namespace OOX
int nCurDepth = oReader.GetDepth(); int nCurDepth = oReader.GetDepth();
while (oReader.ReadNextSiblingNode(nCurDepth)) while (oReader.ReadNextSiblingNode(nCurDepth))
{ {
std::wstring sName = oReader.GetName(); std::wstring sName = XmlUtils::GetNameNoNS(oReader.GetName());
if (L"w:background" == sName) if (L"background" == sName)
{ {
ReadAttributes(oReader); ReadAttributes(oReader);
} }
else if (L"v:background" == sName) else if (L"background" == sName)
m_oBackground = oReader; m_oBackground = oReader;
else if (L"w:binData" == sName) else if (L"binData" == sName)
m_oBinData = oReader; m_oBinData = oReader;
} }
} }
void CBgPict::ReadAttributes(XmlUtils::CXmlLiteReader& oReader) void CBgPict::ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{ {
WritingElement_ReadAttributes_Start(oReader) WritingElement_ReadAttributes_Start_No_NS(oReader)
WritingElement_ReadAttributes_Read_if(oReader, L"w:bgcolor", m_oColor) WritingElement_ReadAttributes_Read_if(oReader, L"bgcolor", m_oColor)
WritingElement_ReadAttributes_Read_else_if(oReader, L"w:background", m_oBackgroundType) WritingElement_ReadAttributes_Read_else_if(oReader, L"background", m_oBackgroundType)
WritingElement_ReadAttributes_End(oReader) WritingElement_ReadAttributes_End_No_NS(oReader)
} }
} }
//------------------------------------------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------------------------------------------
@ -234,69 +234,69 @@ namespace OOX
while ( oReader.ReadNextSiblingNode( Depth ) ) while ( oReader.ReadNextSiblingNode( Depth ) )
{ {
std::wstring sName = oReader.GetName(); std::wstring sName = XmlUtils::GetNameNoNS(oReader.GetName());
WritingElement *pItem = NULL; WritingElement *pItem = NULL;
if (L"w:altChunk" == sName ) if (L"altChunk" == sName )
pItem = new Logic::CAltChunk( document ); pItem = new Logic::CAltChunk( document );
else if (L"w:bookmarkEnd" == sName ) else if (L"bookmarkEnd" == sName )
pItem = new Logic::CBookmarkEnd( document ); pItem = new Logic::CBookmarkEnd( document );
else if (L"w:bookmarkStart" == sName ) else if (L"bookmarkStart" == sName )
pItem = new Logic::CBookmarkStart( document ); pItem = new Logic::CBookmarkStart( document );
else if (L"w:commentRangeEnd" == sName ) else if (L"commentRangeEnd" == sName )
pItem = new Logic::CCommentRangeEnd( document ); pItem = new Logic::CCommentRangeEnd( document );
else if (L"w:commentRangeStart" == sName ) else if (L"commentRangeStart" == sName )
pItem = new Logic::CCommentRangeStart( document ); pItem = new Logic::CCommentRangeStart( document );
//else if (L"w:customXml" == sName ) //else if (L"customXml" == sName )
// pItem = new Logic::CCustomXml( document ); // pItem = new Logic::CCustomXml( document );
else if (L"w:customXmlDelRangeEnd" == sName ) else if (L"customXmlDelRangeEnd" == sName )
pItem = new Logic::CCustomXmlDelRangeEnd( document ); pItem = new Logic::CCustomXmlDelRangeEnd( document );
else if (L"w:customXmlDelRangeStart" == sName ) else if (L"customXmlDelRangeStart" == sName )
pItem = new Logic::CCustomXmlDelRangeStart( document ); pItem = new Logic::CCustomXmlDelRangeStart( document );
else if (L"w:customXmlInsRangeEnd" == sName ) else if (L"customXmlInsRangeEnd" == sName )
pItem = new Logic::CCustomXmlInsRangeEnd( document ); pItem = new Logic::CCustomXmlInsRangeEnd( document );
else if (L"w:customXmlInsRangeStart" == sName ) else if (L"customXmlInsRangeStart" == sName )
pItem = new Logic::CCustomXmlInsRangeStart( document ); pItem = new Logic::CCustomXmlInsRangeStart( document );
else if (L"w:customXmlMoveFromRangeEnd" == sName ) else if (L"customXmlMoveFromRangeEnd" == sName )
pItem = new Logic::CCustomXmlMoveFromRangeEnd( document ); pItem = new Logic::CCustomXmlMoveFromRangeEnd( document );
else if (L"w:customXmlMoveFromRangeStart" == sName ) else if (L"customXmlMoveFromRangeStart" == sName )
pItem = new Logic::CCustomXmlMoveFromRangeStart( document ); pItem = new Logic::CCustomXmlMoveFromRangeStart( document );
else if (L"w:customXmlMoveToRangeEnd" == sName ) else if (L"customXmlMoveToRangeEnd" == sName )
pItem = new Logic::CCustomXmlMoveToRangeEnd( document ); pItem = new Logic::CCustomXmlMoveToRangeEnd( document );
else if (L"w:customXmlMoveToRangeStart" == sName ) else if (L"customXmlMoveToRangeStart" == sName )
pItem = new Logic::CCustomXmlMoveToRangeStart( document ); pItem = new Logic::CCustomXmlMoveToRangeStart( document );
else if (L"w:del" == sName ) else if (L"del" == sName )
pItem = new Logic::CDel( document ); pItem = new Logic::CDel( document );
else if (L"w:ins" == sName ) else if (L"ins" == sName )
pItem = new Logic::CIns( document ); pItem = new Logic::CIns( document );
else if (L"w:moveFrom" == sName ) else if (L"moveFrom" == sName )
pItem = new Logic::CMoveFrom( document ); pItem = new Logic::CMoveFrom( document );
else if (L"w:moveFromRangeEnd" == sName ) else if (L"moveFromRangeEnd" == sName )
pItem = new Logic::CMoveFromRangeEnd( document ); pItem = new Logic::CMoveFromRangeEnd( document );
else if (L"w:moveFromRangeStart" == sName ) else if (L"moveFromRangeStart" == sName )
pItem = new Logic::CMoveFromRangeStart( document ); pItem = new Logic::CMoveFromRangeStart( document );
else if (L"w:moveTo" == sName ) else if (L"moveTo" == sName )
pItem = new Logic::CMoveTo( document ); pItem = new Logic::CMoveTo( document );
else if (L"w:moveToRangeEnd" == sName ) else if (L"moveToRangeEnd" == sName )
pItem = new Logic::CMoveToRangeEnd( document ); pItem = new Logic::CMoveToRangeEnd( document );
else if (L"w:moveToRangeStart" == sName ) else if (L"moveToRangeStart" == sName )
pItem = new Logic::CMoveToRangeStart( document ); pItem = new Logic::CMoveToRangeStart( document );
else if (L"m:oMath" == sName ) else if (L"m:oMath" == sName )
pItem = new Logic::COMath( document ); pItem = new Logic::COMath( document );
else if (L"m:oMathPara" == sName ) else if (L"m:oMathPara" == sName )
pItem = new Logic::COMathPara( document ); pItem = new Logic::COMathPara( document );
else if (L"w:p" == sName ) else if (L"p" == sName )
pItem = new Logic::CParagraph( document ); pItem = new Logic::CParagraph( document );
else if (L"w:permEnd" == sName ) else if (L"permEnd" == sName )
pItem = new Logic::CPermEnd( document ); pItem = new Logic::CPermEnd( document );
else if (L"w:permStart" == sName ) else if (L"permStart" == sName )
pItem = new Logic::CPermStart( document ); pItem = new Logic::CPermStart( document );
else if (L"w:proofErr" == sName ) else if (L"proofErr" == sName )
pItem = new Logic::CProofErr( document ); pItem = new Logic::CProofErr( document );
else if (L"w:sdt" == sName ) else if (L"sdt" == sName )
pItem = new Logic::CSdt( document ); pItem = new Logic::CSdt( document );
else if (L"w:sectPr" == sName ) else if (L"sectPr" == sName )
{ {
m_oSectPr = new Logic::CSectionProperty( document ); m_oSectPr = new Logic::CSectionProperty( document );
m_oSectPr->fromXML(oReader); m_oSectPr->fromXML(oReader);
@ -314,34 +314,34 @@ namespace OOX
} }
//------------------------------------------------------------------------- //-------------------------------------------------------------------------
} }
else if (L"w:tbl" == sName ) else if (L"tbl" == sName )
pItem = new Logic::CTbl( document ); pItem = new Logic::CTbl( document );
else if (L"w:body" == sName && !oReader.IsEmptyNode()) else if (L"body" == sName && !oReader.IsEmptyNode())
{ {
int nWBodyDepth = oReader.GetDepth(); int nWBodyDepth = oReader.GetDepth();
CreateElements(oReader, nWBodyDepth); CreateElements(oReader, nWBodyDepth);
} }
else if (L"wx:sect" == sName && !oReader.IsEmptyNode()) else if (L"sect" == sName && !oReader.IsEmptyNode())
{ {
int nWxSectDepth = oReader.GetDepth(); int nWxSectDepth = oReader.GetDepth();
CreateElements(oReader, nWxSectDepth); CreateElements(oReader, nWxSectDepth);
} }
else if (L"wx:sub-section" == sName && !oReader.IsEmptyNode()) else if (L"sub-section" == sName && !oReader.IsEmptyNode())
{ {
int nWxSubSectDepth = oReader.GetDepth(); int nWxSubSectDepth = oReader.GetDepth();
CreateElements(oReader, nWxSubSectDepth); CreateElements(oReader, nWxSubSectDepth);
} }
else if (L"wx:pBdrGroup" == sName && !oReader.IsEmptyNode()) else if (L"pBdrGroup" == sName && !oReader.IsEmptyNode())
{ {
int nWxBdrGroupDepth = oReader.GetDepth(); int nWxBdrGroupDepth = oReader.GetDepth();
CreateElements(oReader, nWxBdrGroupDepth); CreateElements(oReader, nWxBdrGroupDepth);
} }
else if (L"w:background" == sName) else if (L"background" == sName)
{ {
m_oBackground = new OOX::Logic::CBackground(WritingElement::m_pMainDocument); m_oBackground = new OOX::Logic::CBackground(WritingElement::m_pMainDocument);
m_oBackground->fromXML(oReader); m_oBackground->fromXML(oReader);
} }
else if (L"w:docParts" == sName && !oReader.IsEmptyNode()) else if (L"docParts" == sName && !oReader.IsEmptyNode())
{ {
WritingElement *pItem = new OOX::Logic::CDocParts(WritingElement::m_pMainDocument); WritingElement *pItem = new OOX::Logic::CDocParts(WritingElement::m_pMainDocument);
m_arrItems.push_back(pItem); m_arrItems.push_back(pItem);
@ -375,8 +375,8 @@ namespace OOX
if ( !oReader.ReadNextNode() ) if ( !oReader.ReadNextNode() )
return; return;
std::wstring sName = oReader.GetName(); std::wstring sName = XmlUtils::GetNameNoNS(oReader.GetName());
if ( L"w:document" == sName || L"w:wordDocument" == sName || L"w:glossaryDocument" == sName) if ( L"document" == sName || L"wordDocument" == sName || L"glossaryDocument" == sName)
{ {
fromXML(oReader); fromXML(oReader);
} }
@ -406,10 +406,10 @@ namespace OOX
void CDocument::ReadAttributes(XmlUtils::CXmlLiteReader& oReader) void CDocument::ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{ {
WritingElement_ReadAttributes_Start( oReader ) WritingElement_ReadAttributes_Start_No_NS( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, L"w:conformance", m_oConformance ) WritingElement_ReadAttributes_Read_if ( oReader, L"conformance", m_oConformance )
WritingElement_ReadAttributes_Read_else_if ( oReader, L"xml:space", m_oSpace ) WritingElement_ReadAttributes_Read_else_if ( oReader, L"space", m_oSpace )
WritingElement_ReadAttributes_End( oReader ) WritingElement_ReadAttributes_End_No_NS( oReader )
} }
void CDocument::fromXML(XmlUtils::CXmlLiteReader& oReader) void CDocument::fromXML(XmlUtils::CXmlLiteReader& oReader)
{ {
@ -419,7 +419,7 @@ namespace OOX
return; return;
int nDocumentDepth = oReader.GetDepth(); int nDocumentDepth = oReader.GetDepth();
std::wstring sName = oReader.GetName(); //std::wstring sName = oReader.GetName();
CreateElements(oReader, nDocumentDepth); CreateElements(oReader, nDocumentDepth);
} }

View File

@ -194,20 +194,20 @@ namespace OOX
while( oReader.ReadNextSiblingNode(nDepth) ) while( oReader.ReadNextSiblingNode(nDepth) )
{ {
std::wstring sName = oReader.GetName(); std::wstring sName = XmlUtils::GetNameNoNS(oReader.GetName());
WritingElement *pItem = NULL; WritingElement *pItem = NULL;
if (L"w:bdo" == sName ) if (L"bdo" == sName )
pItem = new CBdo( document ); pItem = new CBdo( document );
else if (L"w:bookmarkEnd" == sName ) else if (L"bookmarkEnd" == sName )
pItem = new CBookmarkEnd( document ); pItem = new CBookmarkEnd( document );
else if (L"w:bookmarkStart" == sName ) else if (L"bookmarkStart" == sName )
pItem = new CBookmarkStart( document ); pItem = new CBookmarkStart( document );
else if (L"w:commentRangeEnd" == sName ) else if (L"commentRangeEnd" == sName )
pItem = new CCommentRangeEnd( document ); pItem = new CCommentRangeEnd( document );
else if (L"w:commentRangeStart" == sName ) else if (L"commentRangeStart" == sName )
pItem = new CCommentRangeStart( document ); pItem = new CCommentRangeStart( document );
else if ( L"aml:annotation" == sName) //Bookmark else if ( L"annotation" == sName) //Bookmark
{ {
nullable_string sType; nullable_string sType;
WritingElement_ReadAttributes_ReadSingle2(oReader, L"w:type", sType); WritingElement_ReadAttributes_ReadSingle2(oReader, L"w:type", sType);
@ -238,55 +238,55 @@ namespace OOX
} }
} }
} }
//else if (L"w:customXml" == sName ) //else if (L"customXml" == sName )
// pItem = new CCustomXml( document ); // pItem = new CCustomXml( document );
else if (L"w:customXmlDelRangeEnd" == sName ) else if (L"customXmlDelRangeEnd" == sName )
pItem = new CCustomXmlDelRangeEnd( document ); pItem = new CCustomXmlDelRangeEnd( document );
else if (L"w:customXmlDelRangeStart" == sName ) else if (L"customXmlDelRangeStart" == sName )
pItem = new CCustomXmlDelRangeStart( document ); pItem = new CCustomXmlDelRangeStart( document );
else if (L"w:customXmlInsRangeEnd" == sName ) else if (L"customXmlInsRangeEnd" == sName )
pItem = new CCustomXmlInsRangeEnd( document ); pItem = new CCustomXmlInsRangeEnd( document );
else if (L"w:customXmlInsRangeStart" == sName ) else if (L"customXmlInsRangeStart" == sName )
pItem = new CCustomXmlInsRangeStart( document ); pItem = new CCustomXmlInsRangeStart( document );
else if (L"w:customXmlMoveFromRangeEnd" == sName ) else if (L"customXmlMoveFromRangeEnd" == sName )
pItem = new CCustomXmlMoveFromRangeEnd( document ); pItem = new CCustomXmlMoveFromRangeEnd( document );
else if (L"w:customXmlMoveFromRangeStart" == sName ) else if (L"customXmlMoveFromRangeStart" == sName )
pItem = new CCustomXmlMoveFromRangeStart( document ); pItem = new CCustomXmlMoveFromRangeStart( document );
else if (L"w:customXmlMoveToRangeEnd" == sName ) else if (L"customXmlMoveToRangeEnd" == sName )
pItem = new CCustomXmlMoveToRangeEnd( document ); pItem = new CCustomXmlMoveToRangeEnd( document );
else if (L"w:customXmlMoveToRangeStart" == sName ) else if (L"customXmlMoveToRangeStart" == sName )
pItem = new CCustomXmlMoveToRangeStart( document ); pItem = new CCustomXmlMoveToRangeStart( document );
else if (L"w:del" == sName ) else if (L"del" == sName )
pItem = new CDel( document ); pItem = new CDel( document );
else if (L"w:dir" == sName ) else if (L"dir" == sName )
pItem = new CDir( document ); pItem = new CDir( document );
else if (L"w:fldSimple" == sName ) else if (L"fldSimple" == sName )
pItem = new CFldSimple( document ); pItem = new CFldSimple( document );
else if (L"w:hyperlink" == sName ||L"w:hlink" == sName ) else if (L"hyperlink" == sName ||L"hlink" == sName )
pItem = new CHyperlink( document ); pItem = new CHyperlink( document );
else if (L"w:ins" == sName ) else if (L"ins" == sName )
pItem = new CIns( document ); pItem = new CIns( document );
else if (L"w:moveFrom" == sName ) else if (L"moveFrom" == sName )
pItem = new CMoveFrom( document ); pItem = new CMoveFrom( document );
else if (L"w:moveFromRangeEnd" == sName ) else if (L"moveFromRangeEnd" == sName )
pItem = new CMoveFromRangeEnd( document ); pItem = new CMoveFromRangeEnd( document );
else if (L"w:moveFromRangeStart" == sName ) else if (L"moveFromRangeStart" == sName )
pItem = new CMoveFromRangeStart( document ); pItem = new CMoveFromRangeStart( document );
else if (L"w:moveTo" == sName ) else if (L"moveTo" == sName )
pItem = new CMoveTo( document ); pItem = new CMoveTo( document );
else if (L"w:moveToRangeEnd" == sName ) else if (L"moveToRangeEnd" == sName )
pItem = new CMoveToRangeEnd( document ); pItem = new CMoveToRangeEnd( document );
else if (L"w:moveToRangeStart" == sName ) else if (L"moveToRangeStart" == sName )
pItem = new CMoveToRangeStart( document ); pItem = new CMoveToRangeStart( document );
else if (L"m:oMath" == sName ) else if (L"oMath" == sName )
pItem = new COMath( document ); pItem = new COMath( document );
else if (L"m:oMathPara" == sName ) else if (L"oMathPara" == sName )
pItem = new COMathPara( document ); pItem = new COMathPara( document );
else if (L"w:permEnd" == sName ) else if (L"permEnd" == sName )
pItem = new CPermEnd( document ); pItem = new CPermEnd( document );
else if (L"w:permStart" == sName ) else if (L"permStart" == sName )
pItem = new CPermStart( document ); pItem = new CPermStart( document );
else if (L"w:pPr" == sName ) else if (L"pPr" == sName )
{// c копией .. для быстрого доступа/анализа {// c копией .. для быстрого доступа/анализа
if (m_oParagraphProperty) if (m_oParagraphProperty)
{ {
@ -304,27 +304,27 @@ namespace OOX
pItem = m_oParagraphProperty = new CParagraphProperty( document ); pItem = m_oParagraphProperty = new CParagraphProperty( document );
} }
} }
else if (L"w:proofErr" == sName ) else if (L"proofErr" == sName )
pItem = new CProofErr( document ); pItem = new CProofErr( document );
else if (L"w:r" == sName ) else if (L"r" == sName )
pItem = new CRun( document ); pItem = new CRun( document );
else if (L"w:sdt" == sName ) else if (L"sdt" == sName )
pItem = new CSdt( document ); pItem = new CSdt( document );
else if (L"w:smartTag" == sName ) else if (L"smartTag" == sName )
pItem = new CSmartTag( document ); pItem = new CSmartTag( document );
//else if (L"w:subDoc" == sName ) //else if (L"subDoc" == sName )
// pItem = new CSubDoc( document ); // pItem = new CSubDoc( document );
else if (L"w:sdtContent" == sName) else if (L"sdtContent" == sName)
{ {
int nDepthChild = oReader.GetDepth(); int nDepthChild = oReader.GetDepth();
fromXML(nDepthChild, oReader); fromXML(nDepthChild, oReader);
} }
else if (L"wx:sect" == sName && !oReader.IsEmptyNode()) else if (L"sect" == sName && !oReader.IsEmptyNode())
{ {
int nWxSectDepth = oReader.GetDepth(); int nWxSectDepth = oReader.GetDepth();
fromXML(nWxSectDepth, oReader); fromXML(nWxSectDepth, oReader);
} }
else if (L"wx:sub-section" == sName && !oReader.IsEmptyNode()) else if (L"sub-section" == sName && !oReader.IsEmptyNode())
{ {
int nWxSubSectDepth = oReader.GetDepth(); int nWxSubSectDepth = oReader.GetDepth();
fromXML(nWxSubSectDepth, oReader); fromXML(nWxSubSectDepth, oReader);
@ -372,17 +372,17 @@ namespace OOX
void CParagraph::ReadAttributes(XmlUtils::CXmlLiteReader& oReader) void CParagraph::ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{ {
WritingElement_ReadAttributes_Start( oReader ) WritingElement_ReadAttributes_Start_No_NS( oReader )
WritingElement_ReadAttributes_Read_if ( oReader,L"w:rsidDel", m_oRsidDel ) WritingElement_ReadAttributes_Read_if ( oReader,L"rsidDel", m_oRsidDel )
WritingElement_ReadAttributes_Read_else_if( oReader,L"w:rsidP", m_oRsidP ) WritingElement_ReadAttributes_Read_else_if( oReader,L"rsidP", m_oRsidP )
WritingElement_ReadAttributes_Read_else_if( oReader,L"w:rsidR", m_oRsidR ) WritingElement_ReadAttributes_Read_else_if( oReader,L"rsidR", m_oRsidR )
WritingElement_ReadAttributes_Read_else_if( oReader,L"w:rsidRDefault", m_oRsidRDefault ) WritingElement_ReadAttributes_Read_else_if( oReader,L"rsidRDefault", m_oRsidRDefault )
WritingElement_ReadAttributes_Read_else_if( oReader,L"w:rsidRPr", m_oRsidRPr ) WritingElement_ReadAttributes_Read_else_if( oReader,L"rsidRPr", m_oRsidRPr )
WritingElement_ReadAttributes_Read_else_if( oReader,L"w14:paraId", m_oParaId ) WritingElement_ReadAttributes_Read_else_if( oReader,L"paraId", m_oParaId )
WritingElement_ReadAttributes_Read_else_if( oReader,L"w14:textId", m_oTextId ) WritingElement_ReadAttributes_Read_else_if( oReader,L"textId", m_oTextId )
WritingElement_ReadAttributes_End( oReader ) WritingElement_ReadAttributes_End_No_NS( oReader )
} }
void CParagraph::AddRun(CRun *pRun) void CParagraph::AddRun(CRun *pRun)
{ {

View File

@ -98,8 +98,8 @@ namespace OOX
int nParentDepth = oReader.GetDepth(); int nParentDepth = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nParentDepth ) ) while( oReader.ReadNextSiblingNode( nParentDepth ) )
{ {
std::wstring sName = oReader.GetName(); std::wstring sName = XmlUtils::GetNameNoNS(oReader.GetName());
if ( L"w:pPr" == sName ) if ( L"pPr" == sName )
m_pParPr->fromXML( oReader ); m_pParPr->fromXML( oReader );
} }
} }
@ -151,12 +151,12 @@ namespace OOX
} }
void CPPrChange::ReadAttributes(XmlUtils::CXmlLiteReader& oReader) void CPPrChange::ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{ {
WritingElement_ReadAttributes_Start( oReader ) WritingElement_ReadAttributes_Start_No_NS( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, L"w:author", m_sAuthor ) WritingElement_ReadAttributes_Read_if ( oReader, L"author", m_sAuthor )
WritingElement_ReadAttributes_Read_else_if( oReader, L"w:date", m_oDate ) WritingElement_ReadAttributes_Read_else_if( oReader, L"date", m_oDate )
WritingElement_ReadAttributes_Read_else_if( oReader, L"w:id", m_oId ) WritingElement_ReadAttributes_Read_else_if( oReader, L"id", m_oId )
WritingElement_ReadAttributes_Read_else_if( oReader, L"oouserid", m_sUserId ) WritingElement_ReadAttributes_Read_else_if( oReader, L"oouserid", m_sUserId )
WritingElement_ReadAttributes_End( oReader ) WritingElement_ReadAttributes_End_No_NS( oReader )
} }
void CParagraphProperty::fromXML(XmlUtils::CXmlNode& oNode) void CParagraphProperty::fromXML(XmlUtils::CXmlNode& oNode)
{//??? где используется ? {//??? где используется ?
@ -225,53 +225,53 @@ namespace OOX
int nParentDepth = oReader.GetDepth(); int nParentDepth = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nParentDepth ) ) while( oReader.ReadNextSiblingNode( nParentDepth ) )
{ {
std::wstring sName = oReader.GetName(); std::wstring sName = XmlUtils::GetNameNoNS(oReader.GetName());
if ( L"w:adjustRightInd" == sName ) if ( L"adjustRightInd" == sName )
m_oAdjustRightInd = oReader; m_oAdjustRightInd = oReader;
else if ( L"w:autoSpaceDE" == sName ) else if ( L"autoSpaceDE" == sName )
m_oAutoSpaceDE = oReader; m_oAutoSpaceDE = oReader;
else if ( L"w:autoSpaceDN" == sName ) else if ( L"autoSpaceDN" == sName )
m_oAutoSpaceDN = oReader; m_oAutoSpaceDN = oReader;
else if ( L"w:bidi" == sName ) else if ( L"bidi" == sName )
m_oBidi = oReader; m_oBidi = oReader;
else if ( L"w:cnfStyle" == sName ) else if ( L"cnfStyle" == sName )
m_oCnfStyle = oReader; m_oCnfStyle = oReader;
else if ( L"w:contextualSpacing" == sName ) else if ( L"contextualSpacing" == sName )
m_oContextualSpacing = oReader; m_oContextualSpacing = oReader;
else if ( L"w:divId" == sName ) else if ( L"divId" == sName )
m_oDivID = oReader; m_oDivID = oReader;
else if ( L"w:framePr" == sName ) else if ( L"framePr" == sName )
m_oFramePr = oReader; m_oFramePr = oReader;
else if ( L"w:ind" == sName ) else if ( L"ind" == sName )
m_oInd = oReader; m_oInd = oReader;
else if ( L"w:jc" == sName ) else if ( L"jc" == sName )
m_oJc = oReader; m_oJc = oReader;
else if ( L"w:keepLines" == sName ) else if ( L"keepLines" == sName )
m_oKeepLines = oReader; m_oKeepLines = oReader;
else if ( L"w:keepNext" == sName ) else if ( L"keepNext" == sName )
m_oKeepNext = oReader; m_oKeepNext = oReader;
else if ( L"w:kinsoku" == sName ) else if ( L"kinsoku" == sName )
m_oKinsoku = oReader; m_oKinsoku = oReader;
else if ( L"w:mirrorIndents" == sName ) else if ( L"mirrorIndents" == sName )
m_oMirrorIndents = oReader; m_oMirrorIndents = oReader;
else if ( L"w:numPr" == sName || L"w:listPr" == sName) else if ( L"numPr" == sName || L"listPr" == sName)
m_oNumPr = oReader; m_oNumPr = oReader;
else if ( L"w:outlineLvl" == sName ) else if ( L"outlineLvl" == sName )
m_oOutlineLvl = oReader; m_oOutlineLvl = oReader;
else if ( L"w:overflowPunct" == sName ) else if ( L"overflowPunct" == sName )
m_oOverflowPunct = oReader; m_oOverflowPunct = oReader;
else if ( L"w:pageBreakBefore" == sName ) else if ( L"pageBreakBefore" == sName )
m_oPageBreakBefore = oReader; m_oPageBreakBefore = oReader;
else if ( L"w:pBdr" == sName ) else if ( L"pBdr" == sName )
m_oPBdr = oReader; m_oPBdr = oReader;
else if ( !m_bPPrChange && L"w:pPrChange" == sName ) else if ( !m_bPPrChange && L"pPrChange" == sName )
m_oPPrChange = oReader; m_oPPrChange = oReader;
else if ( L"w:pStyle" == sName ) else if ( L"pStyle" == sName )
m_oPStyle = oReader; m_oPStyle = oReader;
else if ( !m_bPPrChange && L"w:rPr" == sName ) else if ( !m_bPPrChange && L"rPr" == sName )
m_oRPr = oReader; m_oRPr = oReader;
else if ( !m_bPPrChange && L"w:sectPr" == sName ) else if ( !m_bPPrChange && L"sectPr" == sName )
{ {
m_oSectPr = new CSectionProperty(document); m_oSectPr = new CSectionProperty(document);
m_oSectPr->fromXML(oReader); m_oSectPr->fromXML(oReader);
@ -293,31 +293,31 @@ namespace OOX
} }
//------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------
} }
else if ( L"w:shd" == sName ) else if ( L"shd" == sName )
m_oShd = oReader; m_oShd = oReader;
else if ( L"w:snapToGrid" == sName ) else if ( L"snapToGrid" == sName )
m_oSnapToGrid = oReader; m_oSnapToGrid = oReader;
else if ( L"w:spacing" == sName ) else if ( L"spacing" == sName )
m_oSpacing = oReader; m_oSpacing = oReader;
else if ( L"w:suppressAutoHyphens" == sName ) else if ( L"suppressAutoHyphens" == sName )
m_oSuppressAutoHyphens = oReader; m_oSuppressAutoHyphens = oReader;
else if ( L"w:suppressLineNumbers" == sName ) else if ( L"suppressLineNumbers" == sName )
m_oSuppressLineNumbers = oReader; m_oSuppressLineNumbers = oReader;
else if ( L"w:suppressOverlap" == sName ) else if ( L"suppressOverlap" == sName )
m_oSuppressOverlap = oReader; m_oSuppressOverlap = oReader;
else if ( L"w:tabs" == sName ) else if ( L"tabs" == sName )
m_oTabs = oReader; m_oTabs = oReader;
else if ( L"w:textAlignment" == sName ) else if ( L"textAlignment" == sName )
m_oTextAlignment = oReader; m_oTextAlignment = oReader;
else if ( L"w:textboxTightWrap" == sName ) else if ( L"textboxTightWrap" == sName )
m_oTextboxTightWrap = oReader; m_oTextboxTightWrap = oReader;
else if ( L"w:textDirection" == sName ) else if ( L"textDirection" == sName )
m_oTextDirection = oReader; m_oTextDirection = oReader;
else if ( L"w:topLinePunct" == sName ) else if ( L"topLinePunct" == sName )
m_oTopLinePunct = oReader; m_oTopLinePunct = oReader;
else if ( L"w:widowControl" == sName ) else if ( L"widowControl" == sName )
m_oWidowControl = oReader; m_oWidowControl = oReader;
else if ( L"w:wordWrap" == sName ) else if ( L"wordWrap" == sName )
m_oWordWrap = oReader; m_oWordWrap = oReader;
} }
} }

View File

@ -215,36 +215,36 @@ namespace OOX
WritingElement* CRun::fromXMLElem(XmlUtils::CXmlLiteReader& oReader) WritingElement* CRun::fromXMLElem(XmlUtils::CXmlLiteReader& oReader)
{ {
std::wstring sName = oReader.GetName(); std::wstring sName = XmlUtils::GetNameNoNS(oReader.GetName());
WritingElement *pItem = NULL; WritingElement *pItem = NULL;
OOX::Document* document = WritingElement::m_pMainDocument; OOX::Document* document = WritingElement::m_pMainDocument;
if ( L"mc:AlternateContent" == sName ) if ( L"AlternateContent" == sName )
pItem = new CAlternateContent( document ); pItem = new CAlternateContent( document );
else if ( L"w:annotationRef" == sName ) else if ( L"annotationRef" == sName )
pItem = new CAnnotationRef( document ); pItem = new CAnnotationRef( document );
else if ( L"w:br" == sName ) else if ( L"br" == sName )
pItem = new CBr( document ); pItem = new CBr( document );
else if ( L"w:commentReference" == sName ) else if ( L"commentReference" == sName )
pItem = new CCommentReference( document ); pItem = new CCommentReference( document );
else if ( L"w:contentPart" == sName ) else if ( L"contentPart" == sName )
pItem = new CContentPart( document ); pItem = new CContentPart( document );
else if ( L"w:continuationSeparator" == sName ) else if ( L"continuationSeparator" == sName )
pItem = new CContinuationSeparator( document ); pItem = new CContinuationSeparator( document );
else if ( L"w:cr" == sName ) else if ( L"cr" == sName )
pItem = new CCr( document ); pItem = new CCr( document );
else if ( L"w:dayLong" == sName ) else if ( L"dayLong" == sName )
pItem = new CDayLong( document ); pItem = new CDayLong( document );
else if ( L"w:dayShort" == sName ) else if ( L"dayShort" == sName )
pItem = new CDayShort( document ); pItem = new CDayShort( document );
else if ( L"w:delInstrText" == sName ) else if ( L"delInstrText" == sName )
pItem = new CDelInstrText( document ); pItem = new CDelInstrText( document );
else if ( L"w:delText" == sName ) else if ( L"delText" == sName )
pItem = new CDelText( document ); pItem = new CDelText( document );
else if ( L"w:drawing" == sName ) else if ( L"drawing" == sName )
pItem = new CDrawing( document ); pItem = new CDrawing( document );
else if ( L"w:endnote" == sName ) else if ( L"endnote" == sName )
{ {
CEndnoteReference *pEndRef = new CEndnoteReference(document); CEndnoteReference *pEndRef = new CEndnoteReference(document);
CFtnEdn *pEndnote = new CFtnEdn( document ); CFtnEdn *pEndnote = new CFtnEdn( document );
@ -266,13 +266,13 @@ namespace OOX
} }
pItem = pEndRef; pItem = pEndRef;
} }
else if ( L"w:endnoteRef" == sName ) else if ( L"endnoteRef" == sName )
pItem = new CEndnoteRef( document ); pItem = new CEndnoteRef( document );
else if ( L"w:endnoteReference" == sName ) else if ( L"endnoteReference" == sName )
pItem = new CEndnoteReference( document ); pItem = new CEndnoteReference( document );
else if ( L"w:fldChar" == sName ) else if ( L"fldChar" == sName )
pItem = new CFldChar( document ); pItem = new CFldChar( document );
else if ( L"w:footnote" == sName ) else if ( L"footnote" == sName )
{ {
CFootnoteReference *pFootRef = new CFootnoteReference(document); CFootnoteReference *pFootRef = new CFootnoteReference(document);
CFtnEdn *pFootnote = new CFtnEdn( document ); CFtnEdn *pFootnote = new CFtnEdn( document );
@ -292,29 +292,29 @@ namespace OOX
} }
pItem = pFootRef; pItem = pFootRef;
} }
else if ( L"w:footnoteRef" == sName ) else if ( L"footnoteRef" == sName )
pItem = new CFootnoteRef( document ); pItem = new CFootnoteRef( document );
else if ( L"w:footnoteReference" == sName ) else if ( L"footnoteReference" == sName )
pItem = new CFootnoteReference( document ); pItem = new CFootnoteReference( document );
else if ( L"w:instrText" == sName ) else if ( L"instrText" == sName )
pItem = new CInstrText( document ); pItem = new CInstrText( document );
else if ( L"w:lastRenderedPageBreak" == sName ) else if ( L"lastRenderedPageBreak" == sName )
pItem = new CLastRenderedPageBreak( document ); pItem = new CLastRenderedPageBreak( document );
else if ( L"w:monthLong" == sName ) else if ( L"monthLong" == sName )
pItem = new CMonthLong( document ); pItem = new CMonthLong( document );
else if ( L"w:monthShort" == sName ) else if ( L"monthShort" == sName )
pItem = new CMonthShort( document ); pItem = new CMonthShort( document );
else if ( L"w:noBreakHyphen" == sName ) else if ( L"noBreakHyphen" == sName )
pItem = new CNoBreakHyphen( document ); pItem = new CNoBreakHyphen( document );
else if ( L"w:object" == sName ) else if ( L"object" == sName )
pItem = new CObject( document ); pItem = new CObject( document );
else if ( L"w:pgNum" == sName ) else if ( L"pgNum" == sName )
pItem = new CPgNum( document ); pItem = new CPgNum( document );
else if ( L"w:pict" == sName ) else if ( L"pict" == sName )
pItem = new CPicture( document ); pItem = new CPicture( document );
else if ( L"w:ptab" == sName ) else if ( L"ptab" == sName )
pItem = new CPTab( document ); pItem = new CPTab( document );
else if ( L"w:rPr" == sName ) else if ( L"rPr" == sName )
{ {
if (m_oRunProperty) if (m_oRunProperty)
{ {
@ -331,23 +331,23 @@ namespace OOX
} }
return pItem; return pItem;
} }
else if ( L"w:ruby" == sName ) else if ( L"ruby" == sName )
pItem = new CRuby( document ); pItem = new CRuby( document );
else if ( L"w:separator" == sName ) else if ( L"separator" == sName )
pItem = new CSeparator( document ); pItem = new CSeparator( document );
else if ( L"w:softHyphen" == sName ) else if ( L"softHyphen" == sName )
pItem = new CSoftHyphen( document ); pItem = new CSoftHyphen( document );
else if ( L"w:sym" == sName ) else if ( L"sym" == sName )
pItem = new CSym( document ); pItem = new CSym( document );
else if ( L"w:t" == sName ) else if ( L"t" == sName )
{ {
fromXMLText(oReader); fromXMLText(oReader);
} }
else if ( L"w:tab" == sName ) else if ( L"tab" == sName )
pItem = new CTab( document ); pItem = new CTab( document );
else if ( L"w:yearLong" == sName ) else if ( L"yearLong" == sName )
pItem = new CYearLong( document ); pItem = new CYearLong( document );
else if ( L"aml:annotation" == sName) //Bookmark else if ( L"annotation" == sName) //Bookmark
{ {
nullable_string sType; nullable_string sType;
WritingElement_ReadAttributes_ReadSingle2(oReader, L"w:type", sType); WritingElement_ReadAttributes_ReadSingle2(oReader, L"w:type", sType);
@ -483,20 +483,20 @@ namespace OOX
if ( !oReader.MoveToFirstAttribute() ) if ( !oReader.MoveToFirstAttribute() )
return; return;
std::wstring wsName = oReader.GetName(); std::wstring wsName = XmlUtils::GetNameNoNS(oReader.GetName());
while( !wsName.empty() ) while( !wsName.empty() )
{ {
if ( L"w:rsidDel" == wsName ) if ( L"rsidDel" == wsName )
m_oRsidDel = oReader.GetText(); m_oRsidDel = oReader.GetText();
else if ( L"w:rsidR" == wsName ) else if ( L"rsidR" == wsName )
m_oRsidR = oReader.GetText(); m_oRsidR = oReader.GetText();
else if ( L"w:rsidRPr" == wsName ) else if ( L"rsidRPr" == wsName )
m_oRsidRPr = oReader.GetText(); m_oRsidRPr = oReader.GetText();
if ( !oReader.MoveToNextAttribute() ) if ( !oReader.MoveToNextAttribute() )
break; break;
wsName = oReader.GetName(); wsName = XmlUtils::GetNameNoNS(oReader.GetName());
} }
oReader.MoveToElement(); oReader.MoveToElement();

View File

@ -44,6 +44,7 @@
<OutDir>$(SolutionDir)$(Configuration)\</OutDir> <OutDir>$(SolutionDir)$(Configuration)\</OutDir>
<IntDir>$(Configuration)\</IntDir> <IntDir>$(Configuration)\</IntDir>
<LinkIncremental>true</LinkIncremental> <LinkIncremental>true</LinkIncremental>
<IncludePath>..\..\Common\3dParty\boost\build\win_32\include;$(VC_IncludePath);$(WindowsSDK_IncludePath);</IncludePath>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<OutDir>$(SolutionDir)$(Configuration)\</OutDir> <OutDir>$(SolutionDir)$(Configuration)\</OutDir>
@ -90,6 +91,7 @@
<ItemGroup> <ItemGroup>
<ClCompile Include="..\..\Common\3dParty\pole\pole.cpp" /> <ClCompile Include="..\..\Common\3dParty\pole\pole.cpp" />
<ClCompile Include="..\..\Common\DocxFormat\Source\Base\unicode_util.cpp" /> <ClCompile Include="..\..\Common\DocxFormat\Source\Base\unicode_util.cpp" />
<ClCompile Include="..\..\Common\DocxFormat\Source\Base\Unit.cpp" />
<ClCompile Include="..\..\Common\OfficeFileFormatChecker2.cpp" /> <ClCompile Include="..\..\Common\OfficeFileFormatChecker2.cpp" />
<ClCompile Include="Test.cpp" /> <ClCompile Include="Test.cpp" />
</ItemGroup> </ItemGroup>

View File

@ -21,5 +21,8 @@
<Filter>Common</Filter> <Filter>Common</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="Test.cpp" /> <ClCompile Include="Test.cpp" />
<ClCompile Include="..\..\Common\DocxFormat\Source\Base\Unit.cpp">
<Filter>Common</Filter>
</ClCompile>
</ItemGroup> </ItemGroup>
</Project> </Project>

View File

@ -31,6 +31,7 @@
*/ */
#include <iostream> #include <iostream>
#include <iomanip> #include <iomanip>
#include <boost/format.hpp>
#include "CryptTransform.h" #include "CryptTransform.h"
@ -52,7 +53,7 @@
#include "../../Common/3dParty/cryptopp/zdeflate.h" #include "../../Common/3dParty/cryptopp/zdeflate.h"
#include "../../Common/DocxFormat/Source/Base/unicode_util.h" #include "../../Common/DocxFormat/Source/Base/unicode_util.h"
#include "../../Common/DocxFormat/Source/Base/Unit.h" #include "../../Common/DocxFormat/Source/Base/Base.h"
#include "../../DesktopEditor/common/File.h" #include "../../DesktopEditor/common/File.h"
static const unsigned char encrVerifierHashInputBlockKey[8] = { 0xfe, 0xa7, 0xd2, 0x76, 0x3b, 0x4b, 0x9e, 0x79 }; static const unsigned char encrVerifierHashInputBlockKey[8] = { 0xfe, 0xa7, 0xd2, 0x76, 0x3b, 0x4b, 0x9e, 0x79 };
@ -899,8 +900,10 @@ bool ECMAWriteProtect::VerifyWrike()
wPasswordHash ^= (0x8000 | ('N' << 8) | 'K'); wPasswordHash ^= (0x8000 | ('N' << 8) | 'K');
wPasswordHash ^= p.length(); wPasswordHash ^= p.length();
std::string sPasswordHash = XmlUtils::ToString(wPasswordHash, "%4.4X"); std::stringstream sstream;
sstream << boost::format("%4.4X") % wPasswordHash;
std::string sPasswordHash = sstream.str();
return data.hashValue == sPasswordHash; return data.hashValue == sPasswordHash;
} }
bool ECMAWriteProtect::Verify() bool ECMAWriteProtect::Verify()