mirror of
https://github.com/ONLYOFFICE/core.git
synced 2026-04-07 13:55:33 +08:00
fix bug #60963
This commit is contained in:
@ -325,7 +325,7 @@ namespace OOX
|
||||
else if (L"m:oMathPara" == sName )
|
||||
pItem = new Logic::COMathPara( document );
|
||||
else if (L"p" == sName )
|
||||
pItem = new Logic::CParagraph( document );
|
||||
pItem = new Logic::CParagraph( document, this );
|
||||
else if (L"permEnd" == sName )
|
||||
pItem = new Logic::CPermEnd( document );
|
||||
else if (L"permStart" == sName )
|
||||
|
||||
@ -161,7 +161,7 @@ namespace OOX
|
||||
else if ( _T("m:oMathPara") == sName )
|
||||
pItem = new Logic::COMathPara( document );
|
||||
else if ( _T("w:p") == sName )
|
||||
pItem = new Logic::CParagraph( document );
|
||||
pItem = new Logic::CParagraph( document, this );
|
||||
else if ( _T("w:permEnd") == sName )
|
||||
pItem = new Logic::CPermEnd( document );
|
||||
else if ( _T("w:permStart") == sName )
|
||||
|
||||
@ -221,6 +221,8 @@ namespace OOX
|
||||
if (oReader.IsEmptyNode())
|
||||
return;
|
||||
|
||||
OOX::Document* document = WritingElement::m_pMainDocument;
|
||||
|
||||
int nParentDepth = oReader.GetDepth();
|
||||
while (oReader.ReadNextSiblingNode(nParentDepth))
|
||||
{
|
||||
@ -228,66 +230,69 @@ namespace OOX
|
||||
WritingElement *pItem = NULL;
|
||||
|
||||
if (L"w:bookmarkEnd" == sName)
|
||||
pItem = new CBookmarkEnd(oReader);
|
||||
pItem = new CBookmarkEnd(document);
|
||||
else if (L"w:bookmarkStart" == sName)
|
||||
pItem = new CBookmarkStart(oReader);
|
||||
pItem = new CBookmarkStart(document);
|
||||
else if (L"w:commentRangeEnd" == sName)
|
||||
pItem = new CCommentRangeEnd(oReader);
|
||||
pItem = new CCommentRangeEnd(document);
|
||||
else if (L"w:commentRangeStart" == sName)
|
||||
pItem = new CCommentRangeStart(oReader);
|
||||
pItem = new CCommentRangeStart(document);
|
||||
//else if ( L"w:customXml" == sName )
|
||||
// pItem = new CCustomXml( oReader );
|
||||
else if (L"w:customXmlDelRangeEnd" == sName)
|
||||
pItem = new CCustomXmlDelRangeEnd(oReader);
|
||||
pItem = new CCustomXmlDelRangeEnd(document);
|
||||
else if (L"w:customXmlDelRangeStart" == sName)
|
||||
pItem = new CCustomXmlDelRangeStart(oReader);
|
||||
pItem = new CCustomXmlDelRangeStart(document);
|
||||
else if (L"w:customXmlInsRangeEnd" == sName)
|
||||
pItem = new CCustomXmlInsRangeEnd(oReader);
|
||||
pItem = new CCustomXmlInsRangeEnd(document);
|
||||
else if (L"w:customXmlInsRangeStart" == sName)
|
||||
pItem = new CCustomXmlInsRangeStart(oReader);
|
||||
pItem = new CCustomXmlInsRangeStart(document);
|
||||
else if (L"w:customXmlMoveFromRangeEnd" == sName)
|
||||
pItem = new CCustomXmlMoveFromRangeEnd(oReader);
|
||||
pItem = new CCustomXmlMoveFromRangeEnd(document);
|
||||
else if (L"w:customXmlMoveFromRangeStart" == sName)
|
||||
pItem = new CCustomXmlMoveFromRangeStart(oReader);
|
||||
pItem = new CCustomXmlMoveFromRangeStart(document);
|
||||
else if (L"w:customXmlMoveToRangeEnd" == sName)
|
||||
pItem = new CCustomXmlMoveToRangeEnd(oReader);
|
||||
pItem = new CCustomXmlMoveToRangeEnd(document);
|
||||
else if (L"w:customXmlMoveToRangeStart" == sName)
|
||||
pItem = new CCustomXmlMoveToRangeStart(oReader);
|
||||
pItem = new CCustomXmlMoveToRangeStart(document);
|
||||
else if (L"w:del" == sName)
|
||||
pItem = new CDel(oReader);
|
||||
pItem = new CDel(document);
|
||||
else if (L"w:ins" == sName)
|
||||
pItem = new CIns(oReader);
|
||||
pItem = new CIns(document);
|
||||
else if (L"w:moveFrom" == sName)
|
||||
pItem = new CMoveFrom(oReader);
|
||||
pItem = new CMoveFrom(document);
|
||||
else if (L"w:moveFromRangeEnd" == sName)
|
||||
pItem = new CMoveFromRangeEnd(oReader);
|
||||
pItem = new CMoveFromRangeEnd(document);
|
||||
else if (L"w:moveFromRangeStart" == sName)
|
||||
pItem = new CMoveFromRangeStart(oReader);
|
||||
pItem = new CMoveFromRangeStart(document);
|
||||
else if (L"w:moveTo" == sName)
|
||||
pItem = new CMoveTo(oReader);
|
||||
pItem = new CMoveTo(document);
|
||||
else if (L"w:moveToRangeEnd" == sName)
|
||||
pItem = new CMoveToRangeEnd(oReader);
|
||||
pItem = new CMoveToRangeEnd(document);
|
||||
else if (L"w:moveToRangeStart" == sName)
|
||||
pItem = new CMoveToRangeStart(oReader);
|
||||
pItem = new CMoveToRangeStart(document);
|
||||
else if (L"m:oMath" == sName)
|
||||
pItem = new COMath(oReader);
|
||||
pItem = new COMath(document);
|
||||
else if (L"m:oMathPara" == sName)
|
||||
pItem = new COMathPara(oReader);
|
||||
pItem = new COMathPara(document);
|
||||
else if (L"w:p" == sName)
|
||||
pItem = new CParagraph(oReader);
|
||||
pItem = new CParagraph(document, this);
|
||||
else if (L"w:permEnd" == sName)
|
||||
pItem = new CPermEnd(oReader);
|
||||
pItem = new CPermEnd(document);
|
||||
else if (L"w:permStart" == sName)
|
||||
pItem = new CPermStart(oReader);
|
||||
pItem = new CPermStart(document);
|
||||
else if (L"w:proofErr" == sName)
|
||||
pItem = new CProofErr(oReader);
|
||||
pItem = new CProofErr(document);
|
||||
else if (L"w:sdt" == sName)
|
||||
pItem = new CSdt(oReader);
|
||||
pItem = new CSdt(document);
|
||||
else if (L"w:tbl" == sName)
|
||||
pItem = new CTbl(oReader);
|
||||
pItem = new CTbl(document);
|
||||
|
||||
if (pItem)
|
||||
{
|
||||
m_arrItems.push_back(pItem);
|
||||
pItem->fromXML(oReader);
|
||||
}
|
||||
}
|
||||
}
|
||||
std::wstring CDocPartBody::toXML() const
|
||||
|
||||
@ -192,6 +192,8 @@ namespace OOX
|
||||
if ( oReader.IsEmptyNode() )
|
||||
return;
|
||||
|
||||
OOX::Document* document = WritingElement::m_pMainDocument;
|
||||
|
||||
int nParentDepth = oReader.GetDepth();
|
||||
while( oReader.ReadNextSiblingNode( nParentDepth ) )
|
||||
{
|
||||
@ -199,78 +201,81 @@ namespace OOX
|
||||
WritingElement *pItem = NULL;
|
||||
|
||||
if ( _T("w:bdo") == sName )
|
||||
pItem = new CBdo( oReader );
|
||||
pItem = new CBdo(document);
|
||||
else if ( _T("w:bookmarkEnd") == sName )
|
||||
pItem = new CBookmarkEnd( oReader );
|
||||
pItem = new CBookmarkEnd(document);
|
||||
else if ( _T("w:bookmarkStart") == sName )
|
||||
pItem = new CBookmarkStart( oReader );
|
||||
pItem = new CBookmarkStart(document);
|
||||
else if ( _T("w:commentRangeEnd") == sName )
|
||||
pItem = new CCommentRangeEnd( oReader );
|
||||
pItem = new CCommentRangeEnd(document);
|
||||
else if ( _T("w:commentRangeStart") == sName )
|
||||
pItem = new CCommentRangeStart( oReader );
|
||||
pItem = new CCommentRangeStart(document);
|
||||
//else if ( _T("w:customXml") == sName )
|
||||
// pItem = new CCustomXml( oReader );
|
||||
else if ( _T("w:customXmlDelRangeEnd") == sName )
|
||||
pItem = new CCustomXmlDelRangeEnd( oReader );
|
||||
pItem = new CCustomXmlDelRangeEnd(document);
|
||||
else if ( _T("w:customXmlDelRangeStart") == sName )
|
||||
pItem = new CCustomXmlDelRangeStart( oReader );
|
||||
pItem = new CCustomXmlDelRangeStart(document);
|
||||
else if ( _T("w:customXmlInsRangeEnd") == sName )
|
||||
pItem = new CCustomXmlInsRangeEnd( oReader );
|
||||
pItem = new CCustomXmlInsRangeEnd(document);
|
||||
else if ( _T("w:customXmlInsRangeStart") == sName )
|
||||
pItem = new CCustomXmlInsRangeStart( oReader );
|
||||
pItem = new CCustomXmlInsRangeStart(document);
|
||||
else if ( _T("w:customXmlMoveFromRangeEnd") == sName )
|
||||
pItem = new CCustomXmlMoveFromRangeEnd( oReader );
|
||||
pItem = new CCustomXmlMoveFromRangeEnd(document);
|
||||
else if ( _T("w:customXmlMoveFromRangeStart") == sName )
|
||||
pItem = new CCustomXmlMoveFromRangeStart( oReader );
|
||||
pItem = new CCustomXmlMoveFromRangeStart(document);
|
||||
else if ( _T("w:customXmlMoveToRangeEnd") == sName )
|
||||
pItem = new CCustomXmlMoveToRangeEnd( oReader );
|
||||
pItem = new CCustomXmlMoveToRangeEnd(document);
|
||||
else if ( _T("w:customXmlMoveToRangeStart") == sName )
|
||||
pItem = new CCustomXmlMoveToRangeStart( oReader );
|
||||
pItem = new CCustomXmlMoveToRangeStart(document);
|
||||
else if ( _T("w:del") == sName )
|
||||
pItem = new CDel( oReader );
|
||||
pItem = new CDel(document);
|
||||
else if ( _T("w:dir") == sName )
|
||||
pItem = new CDir( oReader );
|
||||
pItem = new CDir(document);
|
||||
else if ( _T("w:fldSimple") == sName )
|
||||
pItem = new CFldSimple( oReader );
|
||||
pItem = new CFldSimple(document);
|
||||
else if ( _T("w:hyperlink") == sName )
|
||||
pItem = new CHyperlink( oReader );
|
||||
pItem = new CHyperlink(document);
|
||||
else if ( _T("w:ins") == sName )
|
||||
pItem = new CIns( oReader );
|
||||
pItem = new CIns(document);
|
||||
else if ( _T("w:moveFrom") == sName )
|
||||
pItem = new CMoveFrom( oReader );
|
||||
pItem = new CMoveFrom(document);
|
||||
else if ( _T("w:moveFromRangeEnd") == sName )
|
||||
pItem = new CMoveFromRangeEnd( oReader );
|
||||
pItem = new CMoveFromRangeEnd(document);
|
||||
else if ( _T("w:moveFromRangeStart") == sName )
|
||||
pItem = new CMoveFromRangeStart( oReader );
|
||||
pItem = new CMoveFromRangeStart(document);
|
||||
else if ( _T("w:moveTo") == sName )
|
||||
pItem = new CMoveTo( oReader );
|
||||
pItem = new CMoveTo(document);
|
||||
else if ( _T("w:moveToRangeEnd") == sName )
|
||||
pItem = new CMoveToRangeEnd( oReader );
|
||||
pItem = new CMoveToRangeEnd(document);
|
||||
else if ( _T("w:moveToRangeStart") == sName )
|
||||
pItem = new CMoveToRangeStart( oReader );
|
||||
pItem = new CMoveToRangeStart(document);
|
||||
else if ( _T("m:oMath") == sName )
|
||||
pItem = new COMath( oReader );
|
||||
pItem = new COMath(document);
|
||||
else if ( _T("m:oMathPara") == sName )
|
||||
pItem = new COMathPara( oReader );
|
||||
pItem = new COMathPara(document);
|
||||
else if ( _T("w:permEnd") == sName )
|
||||
pItem = new CPermEnd( oReader );
|
||||
pItem = new CPermEnd(document);
|
||||
else if ( _T("w:permStart") == sName )
|
||||
pItem = new CPermStart( oReader );
|
||||
pItem = new CPermStart(document);
|
||||
else if ( _T("w:proofErr") == sName )
|
||||
pItem = new CProofErr( oReader );
|
||||
pItem = new CProofErr(document);
|
||||
else if ( _T("w:r") == sName )
|
||||
pItem = new CRun( oReader );
|
||||
pItem = new CRun(document, this);
|
||||
else if ( _T("w:sdt") == sName )
|
||||
pItem = new CSdt( oReader );
|
||||
pItem = new CSdt(document);
|
||||
else if ( _T("w:smartTag") == sName )
|
||||
pItem = new CSmartTag( oReader );
|
||||
pItem = new CSmartTag(document);
|
||||
//else if ( _T("w:subDoc") == sName )
|
||||
// pItem = new CSubDoc( oReader );
|
||||
else if ( _T("w:ffData") == sName )
|
||||
m_oFFData = new CFFData( oReader );
|
||||
m_oFFData = new CFFData();
|
||||
|
||||
if (pItem)
|
||||
{
|
||||
m_arrItems.push_back(pItem);
|
||||
pItem->fromXML(oReader);
|
||||
}
|
||||
}
|
||||
}
|
||||
std::wstring CFldSimple::toXML() const
|
||||
|
||||
@ -295,7 +295,7 @@ namespace OOX
|
||||
else if ( _T("w:proofErr") == sName )
|
||||
pItem = new CProofErr( document );
|
||||
else if ( _T("w:r") == sName )
|
||||
pItem = new CRun( document );
|
||||
pItem = new CRun( document, this );
|
||||
else if ( _T("w:sdt") == sName )
|
||||
pItem = new CSdt( document );
|
||||
else if ( _T("w:smartTag") == sName )
|
||||
|
||||
@ -32,6 +32,7 @@
|
||||
#include "../DocxFlat.h"
|
||||
#include "../Comments.h"
|
||||
|
||||
#include "Table.h"
|
||||
#include "Paragraph.h"
|
||||
#include "Annotations.h"
|
||||
#include "Run.h"
|
||||
@ -62,9 +63,10 @@ namespace OOX
|
||||
// CParagraph 17.3.1.22 (Part 1)
|
||||
//--------------------------------------------------------------------------------
|
||||
|
||||
CParagraph::CParagraph(OOX::Document *pMain) : WritingElementWithChilds<>(pMain)
|
||||
CParagraph::CParagraph(OOX::Document *pMain, WritingElement *parent) : WritingElementWithChilds<>(pMain)
|
||||
{
|
||||
m_oParagraphProperty = NULL;
|
||||
m_oParent = parent;
|
||||
}
|
||||
CParagraph::CParagraph(XmlUtils::CXmlNode &oNode) : WritingElementWithChilds<>(NULL)
|
||||
{
|
||||
@ -77,6 +79,7 @@ namespace OOX
|
||||
CParagraph::~CParagraph()
|
||||
{
|
||||
m_oParagraphProperty = NULL;
|
||||
m_oParent = NULL;
|
||||
}
|
||||
const CParagraph& CParagraph::operator =(const XmlUtils::CXmlNode& oNode)
|
||||
{
|
||||
@ -349,7 +352,7 @@ namespace OOX
|
||||
else if (L"proofErr" == sName )
|
||||
pItem = new CProofErr( document );
|
||||
else if (L"r" == sName )
|
||||
pItem = new CRun( document );
|
||||
pItem = new CRun( document, this );
|
||||
else if (L"sdt" == sName )
|
||||
pItem = new CSdt( document );
|
||||
else if (L"smartTag" == sName )
|
||||
@ -371,6 +374,20 @@ namespace OOX
|
||||
int nWxSubSectDepth = oReader.GetDepth();
|
||||
fromXML(nWxSubSectDepth, oReader);
|
||||
}
|
||||
else if (L"tbl" == sName)
|
||||
{
|
||||
WritingElementWithChilds *parent = dynamic_cast<WritingElementWithChilds*>(m_oParent);
|
||||
if (parent)
|
||||
{
|
||||
WritingElement *pItemUpper = new CTbl(document);
|
||||
if (pItemUpper)
|
||||
{
|
||||
pItemUpper->fromXML(oReader);
|
||||
parent->m_arrItems.push_back(pItemUpper);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ( pItem )
|
||||
{
|
||||
m_arrItems.push_back( pItem );
|
||||
|
||||
@ -46,7 +46,7 @@ namespace OOX
|
||||
class CParagraph : public WritingElementWithChilds<>
|
||||
{
|
||||
public:
|
||||
CParagraph(OOX::Document *pMain = NULL);
|
||||
CParagraph(OOX::Document *pMain = NULL, WritingElement *parent = NULL);
|
||||
CParagraph(XmlUtils::CXmlNode &oNode);
|
||||
CParagraph(XmlUtils::CXmlLiteReader& oReader);
|
||||
virtual ~CParagraph();
|
||||
@ -77,6 +77,7 @@ namespace OOX
|
||||
|
||||
CParagraphProperty *m_oParagraphProperty; // копия того что в m_arrItems... - для быстрого доступа/анализа
|
||||
// по идее нужно сделать как в Drawing::Paragraph - то есть единственные подобъекты вынести отдельно
|
||||
WritingElement *m_oParent = NULL;
|
||||
};
|
||||
} // namespace Logic
|
||||
} // namespace OOX
|
||||
|
||||
@ -41,6 +41,8 @@
|
||||
#include "../Drawing/Drawing.h"
|
||||
#include "../Comments.h"
|
||||
|
||||
#include "Table.h"
|
||||
#include "Paragraph.h"
|
||||
#include "AlternateContent.h"
|
||||
#include "RunProperty.h"
|
||||
#include "RunContent.h"
|
||||
@ -55,9 +57,10 @@ namespace OOX
|
||||
{
|
||||
namespace Logic
|
||||
{
|
||||
CRun::CRun(OOX::Document *pMain) : WritingElementWithChilds<>(pMain)
|
||||
CRun::CRun(OOX::Document *pMain, WritingElement *parent) : WritingElementWithChilds<>(pMain)
|
||||
{
|
||||
m_oRunProperty = NULL;
|
||||
m_oParent = parent;
|
||||
}
|
||||
CRun::CRun(XmlUtils::CXmlNode &oNode) : WritingElementWithChilds<>(NULL)
|
||||
{
|
||||
@ -287,6 +290,22 @@ namespace OOX
|
||||
}
|
||||
pItem = pEndRef;
|
||||
}
|
||||
else if (L"tbl" == sName)
|
||||
{//ERP
|
||||
CParagraph *paragraph = dynamic_cast<CParagraph*>(m_oParent);
|
||||
WritingElementWithChilds *parent = paragraph ? dynamic_cast<WritingElementWithChilds*>(paragraph->m_oParent) : NULL;
|
||||
|
||||
if (!parent) parent = dynamic_cast<WritingElementWithChilds*>(m_oParent);
|
||||
if (parent)
|
||||
{
|
||||
WritingElement *pItemUpper = new CTbl(document);
|
||||
if (pItemUpper)
|
||||
{
|
||||
pItemUpper->fromXML(oReader);
|
||||
parent->m_arrItems.push_back(pItemUpper);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if ( L"endnoteRef" == sName )
|
||||
pItem = new CEndnoteRef( document );
|
||||
else if ( L"endnoteReference" == sName )
|
||||
|
||||
@ -46,7 +46,7 @@ namespace OOX
|
||||
class CRun : public WritingElementWithChilds<>
|
||||
{
|
||||
public:
|
||||
CRun(OOX::Document *pMain = NULL);
|
||||
CRun(OOX::Document *pMain = NULL, WritingElement *parent = NULL);
|
||||
CRun(XmlUtils::CXmlNode &oNode);
|
||||
CRun(XmlUtils::CXmlLiteReader& oReader);
|
||||
virtual ~CRun();
|
||||
@ -75,6 +75,7 @@ namespace OOX
|
||||
nullable<SimpleTypes::CLongHexNumber> m_oRsidRPr;
|
||||
OOX::Logic::CRunProperty *m_oRunProperty; // копия того что в m_arrItems... - для быстрого доступа/анализа
|
||||
// по идее нужно сделать как в Drawing::Run - то есть единственные подобъекты вынести отдельно
|
||||
WritingElement *m_oParent = NULL;
|
||||
};
|
||||
} // namespace Logic
|
||||
} // namespace OOX
|
||||
|
||||
@ -529,90 +529,96 @@ namespace OOX
|
||||
return;
|
||||
|
||||
int nParentDepth = oReader.GetDepth();
|
||||
|
||||
OOX::Document* document = WritingElement::m_pMainDocument;
|
||||
|
||||
while( oReader.ReadNextSiblingNode( nParentDepth ) )
|
||||
{
|
||||
std::wstring sName = oReader.GetName();
|
||||
WritingElement *pItem = NULL;
|
||||
|
||||
if ( L"w:bdo" == sName )
|
||||
pItem = new CBdo( oReader );
|
||||
pItem = new CBdo(document);
|
||||
else if ( L"w:bookmarkEnd" == sName )
|
||||
pItem = new CBookmarkEnd( oReader );
|
||||
pItem = new CBookmarkEnd(document);
|
||||
else if ( L"w:bookmarkStart" == sName )
|
||||
pItem = new CBookmarkStart( oReader );
|
||||
pItem = new CBookmarkStart(document);
|
||||
else if ( L"w:commentRangeEnd" == sName )
|
||||
pItem = new CCommentRangeEnd( oReader );
|
||||
pItem = new CCommentRangeEnd(document);
|
||||
else if ( L"w:commentRangeStart" == sName )
|
||||
pItem = new CCommentRangeStart( oReader );
|
||||
pItem = new CCommentRangeStart(document);
|
||||
//else if ( L"w:customXml" == sName )
|
||||
// pItem = new CCustomXml( oReader );
|
||||
else if ( L"w:customXmlDelRangeEnd" == sName )
|
||||
pItem = new CCustomXmlDelRangeEnd( oReader );
|
||||
pItem = new CCustomXmlDelRangeEnd(document);
|
||||
else if ( L"w:customXmlDelRangeStart" == sName )
|
||||
pItem = new CCustomXmlDelRangeStart( oReader );
|
||||
pItem = new CCustomXmlDelRangeStart(document);
|
||||
else if ( L"w:customXmlInsRangeEnd" == sName )
|
||||
pItem = new CCustomXmlInsRangeEnd( oReader );
|
||||
pItem = new CCustomXmlInsRangeEnd(document);
|
||||
else if ( L"w:customXmlInsRangeStart" == sName )
|
||||
pItem = new CCustomXmlInsRangeStart( oReader );
|
||||
pItem = new CCustomXmlInsRangeStart(document);
|
||||
else if ( L"w:customXmlMoveFromRangeEnd" == sName )
|
||||
pItem = new CCustomXmlMoveFromRangeEnd( oReader );
|
||||
pItem = new CCustomXmlMoveFromRangeEnd(document);
|
||||
else if ( L"w:customXmlMoveFromRangeStart" == sName )
|
||||
pItem = new CCustomXmlMoveFromRangeStart( oReader );
|
||||
pItem = new CCustomXmlMoveFromRangeStart(document);
|
||||
else if ( L"w:customXmlMoveToRangeEnd" == sName )
|
||||
pItem = new CCustomXmlMoveToRangeEnd( oReader );
|
||||
pItem = new CCustomXmlMoveToRangeEnd(document);
|
||||
else if ( L"w:customXmlMoveToRangeStart" == sName )
|
||||
pItem = new CCustomXmlMoveToRangeStart( oReader );
|
||||
pItem = new CCustomXmlMoveToRangeStart(document);
|
||||
else if ( L"w:del" == sName )
|
||||
pItem = new CDel( oReader );
|
||||
pItem = new CDel(document);
|
||||
else if ( L"w:dir" == sName )
|
||||
pItem = new CDir( oReader );
|
||||
pItem = new CDir(document);
|
||||
else if ( L"w:fldSimple" == sName )
|
||||
pItem = new CFldSimple( oReader );
|
||||
pItem = new CFldSimple(document);
|
||||
else if ( L"w:hyperlink" == sName )
|
||||
pItem = new CHyperlink( oReader );
|
||||
pItem = new CHyperlink(document);
|
||||
else if ( L"w:ins" == sName )
|
||||
pItem = new CIns( oReader );
|
||||
pItem = new CIns(document);
|
||||
else if ( L"w:moveFrom" == sName )
|
||||
pItem = new CMoveFrom( oReader );
|
||||
pItem = new CMoveFrom(document);
|
||||
else if ( L"w:moveFromRangeEnd" == sName )
|
||||
pItem = new CMoveFromRangeEnd( oReader );
|
||||
pItem = new CMoveFromRangeEnd(document);
|
||||
else if ( L"w:moveFromRangeStart" == sName )
|
||||
pItem = new CMoveFromRangeStart( oReader );
|
||||
pItem = new CMoveFromRangeStart(document);
|
||||
else if ( L"w:moveTo" == sName )
|
||||
pItem = new CMoveTo( oReader );
|
||||
pItem = new CMoveTo(document);
|
||||
else if ( L"w:moveToRangeEnd" == sName )
|
||||
pItem = new CMoveToRangeEnd( oReader );
|
||||
pItem = new CMoveToRangeEnd(document);
|
||||
else if ( L"w:moveToRangeStart" == sName )
|
||||
pItem = new CMoveToRangeStart( oReader );
|
||||
pItem = new CMoveToRangeStart(document);
|
||||
else if ( L"m:oMath" == sName )
|
||||
pItem = new COMath( oReader );
|
||||
pItem = new COMath(document);
|
||||
else if ( L"m:oMathPara" == sName )
|
||||
pItem = new COMathPara( oReader );
|
||||
pItem = new COMathPara(document);
|
||||
else if ( L"w:p" == sName )
|
||||
pItem = new CParagraph( oReader );
|
||||
pItem = new CParagraph(document, this);
|
||||
else if ( L"w:permEnd" == sName )
|
||||
pItem = new CPermEnd( oReader );
|
||||
pItem = new CPermEnd(document);
|
||||
else if ( L"w:permStart" == sName )
|
||||
pItem = new CPermStart( oReader );
|
||||
pItem = new CPermStart(document);
|
||||
else if ( L"w:proofErr" == sName )
|
||||
pItem = new CProofErr( oReader );
|
||||
pItem = new CProofErr(document);
|
||||
else if ( L"w:r" == sName )
|
||||
pItem = new CRun( oReader );
|
||||
pItem = new CRun(document, this);
|
||||
else if ( L"w:sdt" == sName )
|
||||
pItem = new CSdt( oReader );
|
||||
pItem = new CSdt(document);
|
||||
else if ( L"w:smartTag" == sName )
|
||||
pItem = new CSmartTag( oReader );
|
||||
pItem = new CSmartTag(document);
|
||||
//else if ( L"w:subDoc" == sName )
|
||||
// pItem = new CSubDoc( oReader );
|
||||
// pItem = new CSubDoc( document );
|
||||
else if ( L"w:tbl" == sName )
|
||||
pItem = new CTbl( oReader );
|
||||
pItem = new CTbl(document);
|
||||
else if ( L"w:tc" == sName )
|
||||
pItem = new CTc( oReader );
|
||||
pItem = new CTc(document);
|
||||
else if ( L"w:tr" == sName )
|
||||
pItem = new CTr( oReader );
|
||||
pItem = new CTr(document);
|
||||
|
||||
if (pItem)
|
||||
{
|
||||
m_arrItems.push_back(pItem);
|
||||
pItem->fromXML(oReader);
|
||||
}
|
||||
}
|
||||
}
|
||||
std::wstring CSdtContent::toXML() const
|
||||
@ -1768,15 +1774,27 @@ namespace OOX
|
||||
return;
|
||||
|
||||
int nParentDepth = oReader.GetDepth();
|
||||
|
||||
OOX::Document* document = WritingElement::m_pMainDocument;
|
||||
|
||||
while( oReader.ReadNextSiblingNode( nParentDepth ) )
|
||||
{
|
||||
std::wstring sName = oReader.GetName();
|
||||
if (L"w:sdtContent" == sName)
|
||||
m_oSdtContent = oReader;
|
||||
{
|
||||
m_oSdtContent = new CSdtContent(document);
|
||||
m_oSdtContent->fromXML(oReader);
|
||||
}
|
||||
else if (L"w:sdtEndPr" == sName)
|
||||
m_oSdtEndPr = oReader;
|
||||
{
|
||||
m_oSdtEndPr = new CSdtEndPr(document);
|
||||
m_oSdtEndPr->fromXML(oReader);
|
||||
}
|
||||
else if (L"w:sdtPr" == sName)
|
||||
m_oSdtPr = oReader;
|
||||
{
|
||||
m_oSdtPr = new CSdtPr(document);
|
||||
m_oSdtPr->fromXML(oReader);
|
||||
}
|
||||
}
|
||||
}
|
||||
std::wstring CSdt::toXML() const
|
||||
|
||||
@ -146,7 +146,7 @@ namespace OOX
|
||||
else if (L"m:oMathPara" == sName )
|
||||
pItem = new COMathPara( document );
|
||||
else if (L"w:p" == sName )
|
||||
pItem = new CParagraph( document );
|
||||
pItem = new CParagraph( document, this );
|
||||
else if (L"w:permEnd" == sName )
|
||||
pItem = new CPermEnd( document );
|
||||
else if (L"w:permStart" == sName )
|
||||
|
||||
@ -1105,7 +1105,7 @@ namespace OOX
|
||||
else if ( _T("m:oMathPara") == sName )
|
||||
pItem = new COMathPara( document );
|
||||
else if ( _T("w:p") == sName )
|
||||
pItem = new CParagraph( document );
|
||||
pItem = new CParagraph( document, this );
|
||||
else if ( _T("w:permEnd") == sName )
|
||||
pItem = new CPermEnd( document );
|
||||
else if ( _T("w:permStart") == sName )
|
||||
|
||||
Reference in New Issue
Block a user