void CNonVisualPictureProperties::fromXML(XmlUtils::CXmlLiteReader& oReader)
		{
			m_eType = et_Unknown;

            CString sName = oReader.GetName();
			if ( _T("a:cNvPicPr") == sName )
				m_eType = et_a_cNvPicPr;
			else if ( _T("p:cNvPicPr") == sName )
				m_eType = et_p_cNvPicPr;
			else if ( _T("pic:cNvPicPr") == sName )
				m_eType = et_pic_cNvPicPr;
			else
				return;

			ReadAttributes( oReader );

			if ( oReader.IsEmptyNode() )
				return;

			int nCurDepth = oReader.GetDepth();
			while ( oReader.ReadNextSiblingNode( nCurDepth ) )
			{
				sName = oReader.GetName();
				if ( _T("a:picLocks") == sName )
					m_oPicLocks = oReader;
				else if ( _T("a:extLst") == sName )
					m_oExtLst = oReader;
			}
		}
		void CHyperlink::fromXML(XmlUtils::CXmlLiteReader& oReader)
		{
			// Определим тип текущей ноды
            CString sName = oReader.GetName();
			if ( _T("a:hlinkClick") == sName  )
				m_eType = et_a_hlinkClick;
			else if ( _T("a:hlinkHover") == sName )
				m_eType = et_a_hlinkHover;


			ReadAttributes( oReader );

			if ( oReader.IsEmptyNode() )
				return;

			int nCurDepth = oReader.GetDepth();
			while( oReader.ReadNextSiblingNode( nCurDepth ) )
			{
                CString sName = oReader.GetName();
				if ( _T("a:extLst") == sName )
					m_oExtLst = oReader;
				else if ( _T("a:snd") == sName )
					m_oSnd = oReader;
			}
		}
Beispiel #3
0
		void EffectLst::fromXML(XmlUtils::CXmlLiteReader& oReader)
		{
			ReadAttributes( oReader );

			if ( oReader.IsEmptyNode() )
				return;

			int nCurDepth = oReader.GetDepth();
			while( oReader.ReadNextSiblingNode( nCurDepth ) )
			{
                std::wstring strName = oReader.GetName();
			
				if (strName == L"a:blur")
					blur = oReader;
				if (strName == L"a:fillOverlay")
					fillOverlay = oReader;
				if (strName == L"a:glow")
					glow = oReader;
				if (strName == L"a:innerShdw")
					innerShdw = oReader;
				if (strName == L"a:outerShdw")
					outerShdw	= oReader;
				if (strName == L"a:prstShdw")
					prstShdw = oReader;
				if (strName == L"a:reflection")
					reflection	= oReader;
				if (strName == L"a:softEdge")
					softEdge = oReader;

			}
		}
Beispiel #4
0
		void CxnSp::fromXML(XmlUtils::CXmlLiteReader& oReader)
		{
			m_namespace = XmlUtils::GetNamespace(oReader.GetName());

			if ( oReader.IsEmptyNode() )
				return;
					
			int nParentDepth = oReader.GetDepth();
			while( oReader.ReadNextSiblingNode( nParentDepth ) )
			{
				std::wstring strName = XmlUtils::GetNameNoNS(oReader.GetName());

				if (_T("nvCxnSpPr") == strName)
					nvCxnSpPr = oReader;
				else if (_T("spPr") == strName)
					spPr = oReader;
				else if (_T("style") == strName)
					style = oReader;
			}

			FillParentPointersForChilds();
		}
		void CNonVisualDrawingProps::fromXML(XmlUtils::CXmlLiteReader& oReader)
		{
			ReadAttributes( oReader );
			
			m_eType = et_Unknown;
            CString sName = oReader.GetName();

			if ( _T("wp:docPr") == sName )
				m_eType = et_wp_docPr;
			else if ( _T("p:cNvPr") == sName )
				m_eType = et_p_cNvPr;
			else if ( _T("pic:cNvPr") == sName )
				m_eType = et_pic_cNvPr;
			else if ( _T("xdr:cNvPr") == sName )
				m_eType = et_xdr_cNvPr;	
			else if ( _T("wps:cNvPr") == sName )
				m_eType = et_w_cNvPr;	
			else if ( _T("dsp:cNvPr") == sName )
				m_eType = et_dsp_cNvPr;	
			else
				return;

			if ( oReader.IsEmptyNode() )
				return;

			int nCurDepth = oReader.GetDepth();
			while( oReader.ReadNextSiblingNode( nCurDepth ) )
			{
				sName = oReader.GetName();
				if ( _T("a:extLst") == sName )
					m_oExtLst = oReader;
				else if ( _T("a:hlinkClick") == sName )
					m_oHlinkClick = oReader;
				else if ( _T("a:hlinkHover") == sName )
					m_oHlinkHover = oReader;
			}
		}
Beispiel #6
0
		void CTblPrExChange::fromXML(XmlUtils::CXmlLiteReader& oReader)
		{
			ReadAttributes( oReader );

			if ( oReader.IsEmptyNode() )
				return;

			int nParentDepth = oReader.GetDepth();
			while( oReader.ReadNextSiblingNode( nParentDepth ) )
			{
				CWCharWrapper sName = oReader.GetName();
				if ( m_pTblPrEx.IsInit() && _T("w:tblPrEx") == sName )
					m_pTblPrEx->fromXML( oReader );
			}
		}
		void CAlternateContent::fromXML(XmlUtils::CXmlLiteReader& oReader)
		{
			if ( oReader.IsEmptyNode() )
				return;
            
            m_sXml.Init();
            m_sXml->Append(oReader.GetOuterXml());
            //			CString sXml;
            //			sXml.Format(_T("<root xmlns:wpc=\"http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas\" xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\" xmlns:o=\"urn:schemas-microsoft-com:office:office\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" xmlns:m=\"http://schemas.openxmlformats.org/officeDocument/2006/math\" xmlns:v=\"urn:schemas-microsoft-com:vml\" xmlns:wp14=\"http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing\" xmlns:wp=\"http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing\" xmlns:w10=\"urn:schemas-microsoft-com:office:word\" xmlns:w=\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\" xmlns:w14=\"http://schemas.microsoft.com/office/word/2010/wordml\" xmlns:wpg=\"http://schemas.microsoft.com/office/word/2010/wordprocessingGroup\" xmlns:wpi=\"http://schemas.microsoft.com/office/word/2010/wordprocessingInk\" xmlns:wne=\"http://schemas.microsoft.com/office/word/2006/wordml\" xmlns:wps=\"http://schemas.microsoft.com/office/word/2010/wordprocessingShape\">%ls</root>"), m_sXml.get());
            
            
            CString sBegin(_T("<root xmlns:wpc=\"http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas\" xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\" xmlns:o=\"urn:schemas-microsoft-com:office:office\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" xmlns:m=\"http://schemas.openxmlformats.org/officeDocument/2006/math\" xmlns:v=\"urn:schemas-microsoft-com:vml\" xmlns:wp14=\"http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing\" xmlns:wp=\"http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing\" xmlns:w10=\"urn:schemas-microsoft-com:office:word\" xmlns:w=\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\" xmlns:w14=\"http://schemas.microsoft.com/office/word/2010/wordml\" xmlns:wpg=\"http://schemas.microsoft.com/office/word/2010/wordprocessingGroup\" xmlns:wpi=\"http://schemas.microsoft.com/office/word/2010/wordprocessingInk\" xmlns:wne=\"http://schemas.microsoft.com/office/word/2006/wordml\" xmlns:wps=\"http://schemas.microsoft.com/office/word/2010/wordprocessingShape\">"));
            
            CString sEnd(_T("</root>"));
            CString sXml = sBegin + m_sXml.get() + sEnd;
            
            XmlUtils::CXmlLiteReader oSubReader;
			oSubReader.FromString(sXml);
			oSubReader.ReadNextNode();//root
			oSubReader.ReadNextNode();//AlternateContent

			int nParentDepth = oSubReader.GetDepth();
			while( oSubReader.ReadNextSiblingNode( nParentDepth ) )
			{
				CWCharWrapper sName = oSubReader.GetName();
				if ( _T("mc:Choice") == sName )
				{
					CRun altRun(oSubReader);
					
					for (unsigned int i = 0; i < altRun.m_arrItems.size(); ++i)
						m_arrChoiceItems.push_back(altRun.m_arrItems[i]);
					
					//без RemoveAll они очистятся вместе с altRun
					altRun.m_arrItems.clear();
				}
				else if ( _T("mc:Fallback") == sName )
				{
					CRun altRun(oSubReader);
					
					for (unsigned int i = 0; i < altRun.m_arrItems.size(); ++i)
						m_arrFallbackItems.push_back(altRun.m_arrItems[i]);
					
					//без RemoveAll они очистятся вместе с altRun
					altRun.m_arrItems.clear();
				}
			}
		}
		void CRPrChange::fromXML(XmlUtils::CXmlLiteReader& oReader)
		{
			ReadAttributes( oReader );

			if ( oReader.IsEmptyNode() )
				return;

			int nParentDepth = oReader.GetDepth();
			while( oReader.ReadNextSiblingNode( nParentDepth ) )
			{
				CWCharWrapper sName = oReader.GetName();
				WritingElement *pItem = NULL;

				if ( _T("w:rPr") == sName )
					m_pRunPr->fromXML( oReader );
			}
		}
		void CIns::fromXML(XmlUtils::CXmlLiteReader& oReader)
		{
			ReadAttributes( oReader );

			if ( oReader.IsEmptyNode() )
				return;

			int nParentDepth = oReader.GetDepth();
			while( oReader.ReadNextSiblingNode( nParentDepth ) )
			{
				CWCharWrapper sName = oReader.GetName();
				WritingElement *pItem = NULL;

				if ( _T("w:bdo") == sName )
					pItem = new CBdo( oReader );
				else if ( _T("w:bookmarkEnd") == sName )
					pItem = new CBookmarkEnd( oReader );
				else if ( _T("w:bookmarkStart") == sName )
					pItem = new CBookmarkStart( oReader );
				else if ( _T("w:commentRangeEnd") == sName )
					pItem = new CCommentRangeEnd( oReader );
				else if ( _T("w:commentRangeStart") == sName )
					pItem = new CCommentRangeStart( oReader );
				
				
				else if ( _T("w:customXmlDelRangeEnd") == sName )
					pItem = new CCustomXmlDelRangeEnd( oReader );
				else if ( _T("w:customXmlDelRangeStart") == sName )
					pItem = new CCustomXmlDelRangeStart( oReader );
				else if ( _T("w:customXmlInsRangeEnd") == sName )
					pItem = new CCustomXmlInsRangeEnd( oReader );
				else if ( _T("w:customXmlInsRangeStart") == sName )
					pItem = new CCustomXmlInsRangeStart( oReader );
				else if ( _T("w:customXmlMoveFromRangeEnd") == sName ) 
					pItem = new CCustomXmlMoveFromRangeEnd( oReader );
				else if ( _T("w:customXmlMoveFromRangeStart") == sName )
					pItem = new CCustomXmlMoveFromRangeStart( oReader );
				else if ( _T("w:customXmlMoveToRangeEnd") == sName ) 
					pItem = new CCustomXmlMoveToRangeEnd( oReader );
				else if ( _T("w:customXmlMoveToRangeStart") == sName )
					pItem = new CCustomXmlMoveToRangeStart( oReader );
				else if ( _T("w:del") == sName )
					pItem = new CDel( oReader );
				else if ( _T("w:dir") == sName )
					pItem = new CDir( oReader );
				else if ( _T("w:fldSimple") == sName )
					pItem = new CFldSimple( oReader );
				else if ( _T("w:hyperlink") == sName )
					pItem = new CHyperlink( oReader );
				else if ( _T("w:ins") == sName )
					pItem = new CIns( oReader );
				
				
				else if ( _T("w:moveFromRangeEnd") == sName )
					pItem = new CMoveToRangeEnd( oReader );
				else if ( _T("w:moveFromRangeStart") == sName )
					pItem = new CMoveToRangeStart( oReader );
				
				
				else if ( _T("w:moveToRangeEnd") == sName )
					pItem = new CMoveToRangeEnd( oReader );
				else if ( _T("w:moveToRangeStart") == sName )
					pItem = new CMoveToRangeStart( oReader );
				else if ( _T("m:oMath") == sName )
					pItem = new COMath( oReader );
				else if ( _T("m:oMathPara") == sName )
					pItem = new COMathPara( oReader );
				else if ( _T("w:permEnd") == sName )
					pItem = new CPermEnd( oReader );
				else if ( _T("w:permStart") == sName )
					pItem = new CPermStart( oReader );
				else if ( _T("w:proofErr") == sName )
					pItem = new CProofErr( oReader );
				else if ( _T("w:r") == sName )
					pItem = new CRun( oReader );
				else if ( _T("w:sdt") == sName )
					pItem = new CSdt( oReader );
				else if ( _T("w:smartTag") == sName )
					pItem = new CSmartTag( oReader );
				
				

				if ( pItem )
					m_arrItems.Add( pItem );
			}
		}
Beispiel #10
0
		void    CTc::fromXML(XmlUtils::CXmlLiteReader& oReader)
		{
			ReadAttributes( oReader );

			if ( oReader.IsEmptyNode() )
				return;

			int nParentDepth = oReader.GetDepth();
			while( oReader.ReadNextSiblingNode( nParentDepth ) )
			{
				CWCharWrapper sName = oReader.GetName();
				WritingElement *pItem = NULL;

				/*if ( _T("w:altChunk") == sName )
					pItem = new CAltChunk( oReader );
				else */if ( _T("w:bookmarkEnd") == sName )
					pItem = new CBookmarkEnd( oReader );
				else if ( _T("w:bookmarkStart") == sName )
					pItem = new CBookmarkStart( oReader );
				else if ( _T("w:commentRangeEnd") == sName )
					pItem = new CCommentRangeEnd( oReader );
				else if ( _T("w:commentRangeStart") == sName )
					pItem = new CCommentRangeStart( oReader );
				//else if ( _T("w:customXml") == sName )
				//	pItem = new CCustomXml( oReader );
				else if ( _T("w:customXmlDelRangeEnd") == sName )
					pItem = new CCustomXmlDelRangeEnd( oReader );
				else if ( _T("w:customXmlDelRangeStart") == sName )
					pItem = new CCustomXmlDelRangeStart( oReader );
				else if ( _T("w:customXmlInsRangeEnd") == sName )
					pItem = new CCustomXmlInsRangeEnd( oReader );
				else if ( _T("w:customXmlInsRangeStart") == sName )
					pItem = new CCustomXmlInsRangeStart( oReader );
				else if ( _T("w:customXmlMoveFromRangeEnd") == sName ) 
					pItem = new CCustomXmlMoveFromRangeEnd( oReader );
				else if ( _T("w:customXmlMoveFromRangeStart") == sName )
					pItem = new CCustomXmlMoveFromRangeStart( oReader );
				else if ( _T("w:customXmlMoveToRangeEnd") == sName ) 
					pItem = new CCustomXmlMoveToRangeEnd( oReader );
				else if ( _T("w:customXmlMoveToRangeStart") == sName )
					pItem = new CCustomXmlMoveToRangeStart( oReader );
				else if ( _T("w:del") == sName )
					pItem = new CDel( oReader );
				else if ( _T("w:ins") == sName )
					pItem = new CIns( oReader );
				//else if ( _T("w:moveFrom") == sName )
				//	pItem = new CMoveFrom( oReader );
				else if ( _T("w:moveFromRangeEnd") == sName )
					pItem = new CMoveToRangeEnd( oReader );
				else if ( _T("w:moveFromRangeStart") == sName )
					pItem = new CMoveToRangeStart( oReader );
				//else if ( _T("w:moveTo") == sName )
				//	pItem = new CMoveTo( oReader );
				else if ( _T("w:moveToRangeEnd") == sName )
					pItem = new CMoveToRangeEnd( oReader );
				else if ( _T("w:moveToRangeStart") == sName )
					pItem = new CMoveToRangeStart( oReader );
				else if ( _T("m:oMath") == sName )
					pItem = new COMath( oReader );
				else if ( _T("m:oMathPara") == sName )
					pItem = new COMathPara( oReader );
				else if ( _T("w:p") == sName )
					pItem = new CParagraph( oReader );
				else if ( _T("w:permEnd") == sName )
					pItem = new CPermEnd( oReader );
				else if ( _T("w:permStart") == sName )
					pItem = new CPermStart( oReader );
				else if ( _T("w:proofErr") == sName )
					pItem = new CProofErr( oReader );
				else if ( _T("w:sdt") == sName )
					pItem = new CSdt( oReader );
				else if ( _T("w:tbl") == sName )
					pItem = new CTbl( oReader );
				else if ( _T("w:tcPr") == sName )
				{
					pItem = m_oTableCellProperties = new CTableCellProperties( oReader );
				}

				if ( pItem )
					m_arrItems.push_back( pItem );
			}
		}
Beispiel #11
0
		void    CTr::fromXML(XmlUtils::CXmlLiteReader& oReader)
		{
			ReadAttributes( oReader );

			if ( oReader.IsEmptyNode() )
				return;

			int nParentDepth = oReader.GetDepth();
			int nNumCol = 0;
			while( oReader.ReadNextSiblingNode( nParentDepth ) )
			{
				CWCharWrapper sName = oReader.GetName();
				WritingElement *pItem = NULL;

				if ( _T("w:bookmarkEnd") == sName )
					pItem = new CBookmarkEnd( oReader );
				else if ( _T("w:bookmarkStart") == sName )
					pItem = new CBookmarkStart( oReader );
				else if ( _T("w:commentRangeEnd") == sName )
					pItem = new CCommentRangeEnd( oReader );
				else if ( _T("w:commentRangeStart") == sName )
					pItem = new CCommentRangeStart( oReader );
				//else if ( _T("w:customXml") == sName )
				//	pItem = new CCustomXml( oReader );
				else if ( _T("w:customXmlDelRangeEnd") == sName )
					pItem = new CCustomXmlDelRangeEnd( oReader );
				else if ( _T("w:customXmlDelRangeStart") == sName )
					pItem = new CCustomXmlDelRangeStart( oReader );
				else if ( _T("w:customXmlInsRangeEnd") == sName )
					pItem = new CCustomXmlInsRangeEnd( oReader );
				else if ( _T("w:customXmlInsRangeStart") == sName )
					pItem = new CCustomXmlInsRangeStart( oReader );
				else if ( _T("w:customXmlMoveFromRangeEnd") == sName ) 
					pItem = new CCustomXmlMoveFromRangeEnd( oReader );
				else if ( _T("w:customXmlMoveFromRangeStart") == sName )
					pItem = new CCustomXmlMoveFromRangeStart( oReader );
				else if ( _T("w:customXmlMoveToRangeEnd") == sName ) 
					pItem = new CCustomXmlMoveToRangeEnd( oReader );
				else if ( _T("w:customXmlMoveToRangeStart") == sName )
					pItem = new CCustomXmlMoveToRangeStart( oReader );
				else if ( _T("w:del") == sName )
					pItem = new CDel( oReader );
				else if ( _T("w:ins") == sName )
					pItem = new CIns( oReader );
				//else if ( _T("w:moveFrom") == sName )
				//	pItem = new CMoveFrom( oReader );
				else if ( _T("w:moveFromRangeEnd") == sName )
					pItem = new CMoveToRangeEnd( oReader );
				else if ( _T("w:moveFromRangeStart") == sName )
					pItem = new CMoveToRangeStart( oReader );
				//else if ( _T("w:moveTo") == sName )
				//	pItem = new CMoveTo( oReader );
				else if ( _T("w:moveToRangeEnd") == sName )
					pItem = new CMoveToRangeEnd( oReader );
				else if ( _T("w:moveToRangeStart") == sName )
					pItem = new CMoveToRangeStart( oReader );
				else if ( _T("m:oMath") == sName )
					pItem = new COMath( oReader );
				else if ( _T("m:oMathPara") == sName )
					pItem = new COMathPara( oReader );
				else if ( _T("w:permEnd") == sName )
					pItem = new CPermEnd( oReader );
				else if ( _T("w:permStart") == sName )
					pItem = new CPermStart( oReader );
				else if ( _T("w:proofErr") == sName )
					pItem = new CProofErr( oReader );
				else if ( _T("w:sdt") == sName )
					pItem = new CSdt( oReader );
				else if ( _T("w:tblPrEx") == sName )
					pItem = new CTblPrEx( oReader );
				else if ( _T("w:tc") == sName )
				{
					pItem = new CTc( oReader );
					if ( pItem )
					{
						CTc *pCell = (CTc *)pItem;
						pCell->m_nNumCol = nNumCol;

						CTableCellProperties *pProps = pCell->GetProperties();
						if ( pProps )
						{
							if ( pProps->m_oGridSpan.IsInit() && pProps->m_oGridSpan->m_oVal.IsInit() )
								nNumCol += pProps->m_oGridSpan->m_oVal->GetValue();
							else
								nNumCol++;
						}
						else
							nNumCol++;
					}
				}
				else if ( _T("w:trPr") == sName )
				{
					pItem = m_oTableRowProperties = new CTableRowProperties( oReader );
				}

				if ( pItem )
					m_arrItems.push_back( pItem );
			}
			m_nCountCell = nNumCol;
		}
		void    CMathArgNodes::fromXML(XmlUtils::CXmlLiteReader& oReader)
		{
			sNodeName = oReader.GetName();				
			if(sNodeName == _T("m:deg"))
					eType = et_m_deg;
				else if (sNodeName == _T("m:den"))
					eType = et_m_den;
				else if (sNodeName == _T("m:e"))
					eType = et_m_e;
				else if (sNodeName == _T("m:fName"))
					eType = et_m_fName;
				else if (sNodeName == _T("m:lim"))
					eType = et_m_lim;
				else if (sNodeName == _T("m:num"))
					eType = et_m_num;
				else if (sNodeName == _T("m:oMath"))
					eType = et_m_oMath;
				else if (sNodeName == _T("m:sub"))
					eType = et_m_sub;
				else if (sNodeName == _T("m:sup"))
					eType = et_m_sup;
				else
					eType = et_Unknown;

			if ( oReader.IsEmptyNode())
				return;

			int nParentDepth = oReader.GetDepth();
			while( oReader.ReadNextSiblingNode( nParentDepth ) )
			{
				CWCharWrapper sName = oReader.GetName();
				WritingElement *pItem = NULL;

				if ( _T("m:acc") == sName )
					pItem = new OOX::Logic::CAcc( oReader );
				else if ( _T("m:argPr") == sName )
					pItem = new OOX::Logic::CArgPr( oReader );
				else if ( _T("m:bar") == sName )
					pItem = new OOX::Logic::CBar( oReader );
				else if ( _T("w:bookmarkEnd") == sName )
					pItem = new OOX::Logic::CBookmarkEnd( oReader );
				else if ( _T("w:bookmarkStart") == sName )
					pItem = new OOX::Logic::CBookmarkStart( oReader );
				else if ( _T("m:borderBox") == sName )
					pItem = new OOX::Logic::CBorderBox( oReader );
				else if ( _T("m:box") == sName )
					pItem = new OOX::Logic::CBox( oReader );
				else if ( _T("w:commentRangeEnd") == sName )
					pItem = new OOX::Logic::CCommentRangeEnd( oReader );
				else if ( _T("w:commentRangeStart") == sName )
					pItem = new OOX::Logic::CCommentRangeStart( oReader );
				else if ( _T("m:ctrlPr") == sName )
					pItem = new OOX::Logic::CCtrlPr( oReader );
				else if ( _T("w:customXmlDelRangeEnd") == sName ) 
					pItem = new OOX::Logic::CCustomXmlDelRangeEnd( oReader );
				else if ( _T("w:customXmlDelRangeStart") == sName )
					pItem = new OOX::Logic::CCustomXmlDelRangeStart( oReader );
				else if ( _T("w:customXmlInsRangeEnd") == sName )
					pItem = new OOX::Logic::CCustomXmlInsRangeEnd( oReader );
				else if ( _T("w:customXmlInsRangeStart") == sName )
					pItem = new OOX::Logic::CCustomXmlInsRangeStart( oReader );
				else if ( _T("w:customXmlMoveFromRangeEnd") == sName )
					pItem = new OOX::Logic::CCustomXmlMoveFromRangeEnd( oReader );
				else if ( _T("w:customXmlMoveFromRangeStart") == sName )
					pItem = new OOX::Logic::CCustomXmlMoveFromRangeStart( oReader );
				else if ( _T("w:customXmlMoveToRangeEnd") == sName )
					pItem = new OOX::Logic::CCustomXmlMoveToRangeEnd( oReader );
				else if ( _T("w:customXmlMoveToRangeStart") == sName )
					pItem = new OOX::Logic::CCustomXmlMoveToRangeStart( oReader );
				else if ( _T("m:d") == sName )
					pItem = new OOX::Logic::CDelimiter( oReader );
				else if ( _T("w:del") == sName )
					pItem = new CDel( oReader );
				else if ( _T("m:eqArr") == sName )
					pItem = new OOX::Logic::CEqArr( oReader );
				else if ( _T("m:f") == sName )
					pItem = new OOX::Logic::CFraction( oReader );
				else if ( _T("m:func") == sName )
					pItem = new OOX::Logic::CFunc( oReader );
				else if ( _T("m:groupChr") == sName )
					pItem = new CGroupChr( oReader );
				else if ( _T("w:ins") == sName )
					pItem = new CIns( oReader );
				else if ( _T("m:limLow") == sName )
					pItem = new OOX::Logic::CLimLow( oReader );
				else if ( _T("m:limUpp") == sName )
					pItem = new OOX::Logic::CLimUpp( oReader );
				else if ( _T("m:m") == sName )
					pItem = new OOX::Logic::CMatrix( oReader );
				
				
				else if ( _T("w:moveFromRangeEnd") == sName )
					pItem = new OOX::Logic::CMoveFromRangeEnd( oReader );
				else if ( _T("w:moveFromRangeStart") == sName )
					pItem = new OOX::Logic::CMoveFromRangeStart( oReader );
				
				
				else if ( _T("w:moveToRangeEnd") == sName )
					pItem = new OOX::Logic::CMoveToRangeEnd( oReader );
				else if ( _T("w:moveToRangeStart") == sName )
					pItem = new OOX::Logic::CMoveToRangeStart( oReader );
				else if ( _T("m:nary") == sName )
					pItem = new OOX::Logic::CNary( oReader );
				else if ( _T("m:oMath") == sName )
					pItem = new OOX::Logic::COMath( oReader );
				else if ( _T("m:oMathPara") == sName )
					pItem = new OOX::Logic::COMathPara( oReader );
				else if ( _T("w:permEnd") == sName )
					pItem = new OOX::Logic::CPermEnd( oReader );
				else if ( _T("w:permStart") == sName )
					pItem = new OOX::Logic::CPermStart( oReader );
				else if ( _T("m:phant") == sName )
					pItem = new OOX::Logic::CPhant( oReader );
				else if ( _T("w:proofErr") == sName )
					pItem = new OOX::Logic::CProofErr( oReader );
				else if ( _T("m:r") == sName )
					pItem = new OOX::Logic::CMRun( oReader );
				else if ( _T("m:rad") == sName )
					pItem = new OOX::Logic::CRad( oReader );
				else if ( _T("m:sPre") == sName )
					pItem = new OOX::Logic::CSPre( oReader );
				else if ( _T("m:sSub") == sName )
					pItem = new OOX::Logic::CSSub( oReader );
				else if ( _T("m:sSubSup") == sName )
					pItem = new OOX::Logic::CSSubSup( oReader );
				else if ( _T("m:sSup") == sName )
					pItem = new OOX::Logic::CSSup( oReader );

				if ( pItem )
					m_arrItems.Add( pItem );
			}
		}