Commit 40209b6d authored by Sergey.Konovalov's avatar Sergey.Konovalov Committed by Alexander Trofimov

ошибка при чтении через sax xml вида <node attribute=""></node>, изменения для...

ошибка при чтении через sax xml вида <node attribute=""></node>, изменения для сборки pptxFile c _USE_LIBXML2_READER_

git-svn-id: svn://fileserver/activex/AVS/Sources/TeamlabOffice/trunk/ServerComponents@58127 954022d7-b5bf-4e40-9824-e11837661b57
parent 7f623c1b
......@@ -2105,7 +2105,7 @@ void CAVSOfficeDrawingConverter::CheckBrushShape(PPTX::Logic::SpTreeElem& oElem,
PPTX::Logic::BlipFill* pBlipFill = new PPTX::Logic::BlipFill();
pBlipFill->m_namespace = _T("a");
pBlipFill->blip = new PPTX::Logic::Blip();
pBlipFill->blip->embed = *sRid;
pBlipFill->blip->embed = new OOX::RId(*sRid);
if (sType.is_init() && ((*sType == _T("tile")) || (*sType == _T("pattern"))))
{
......@@ -2161,7 +2161,7 @@ void CAVSOfficeDrawingConverter::CheckBrushShape(PPTX::Logic::SpTreeElem& oElem,
PPTX::Logic::BlipFill* pBlipFill = new PPTX::Logic::BlipFill();
pBlipFill->m_namespace = _T("a");
pBlipFill->blip = new PPTX::Logic::Blip();
pBlipFill->blip->embed = *sRid;
pBlipFill->blip->embed = new OOX::RId(*sRid);
if (sType.is_init() && *sType == _T("tile"))
{
......
......@@ -93,12 +93,9 @@ namespace PPTX
oNode.ReadAttributeBase(L"id", id);
BSTR bsMem = oNode.ReadAttributeBase(L"spid");
if (NULL != bsMem)
{
CString bsMem = oNode.ReadAttributeBase(L"spid");
if (!bsMem.IsEmpty())
id = bsMem;
SysFreeString(bsMem);
}
if (id.IsInit())
{
......
......@@ -119,6 +119,7 @@ namespace NSCommon
this->m_pPointer = new Type( cwsValue );
return *this;
}
#ifdef _WIN32
nullable<Type>& operator=(const BSTR &value)
{
RELEASEOBJECT(this->m_pPointer);
......@@ -126,7 +127,7 @@ namespace NSCommon
this->m_pPointer = new Type( value );
return *this;
}
#endif
nullable<Type>& operator=(const nullable<Type> &oOther)
{
RELEASEOBJECT(this->m_pPointer);
......@@ -319,6 +320,15 @@ namespace NSCommon
*m_pPointer = 0;
}
}
nullable_int& operator=(const wchar_t* cwsValue)
{
RELEASEOBJECT(m_pPointer);
if ( NULL != cwsValue )
m_pPointer = new int(XmlUtils::GetInteger(cwsValue));
return *this;
}
#ifdef _WIN32
AVSINLINE void operator=(const BSTR& value)
{
......@@ -391,13 +401,23 @@ namespace NSCommon
*m_pPointer = max;
}
}
nullable_sizet& operator=(const wchar_t* cwsValue)
{
RELEASEOBJECT(m_pPointer);
if ( NULL != cwsValue )
m_pPointer = new size_t(XmlUtils::GetUInteger(cwsValue));
return *this;
}
#ifdef _WIN32
AVSINLINE void operator=(const BSTR& value)
{
RELEASEOBJECT(m_pPointer);
if (NULL != value)
m_pPointer = new size_t(XmlUtils::GetUInteger(value));
}
#endif
AVSINLINE void operator=(const size_t& value)
{
RELEASEOBJECT(m_pPointer);
......@@ -449,13 +469,23 @@ namespace NSCommon
*m_pPointer = max;
}
}
nullable_double& operator=(const wchar_t* cwsValue)
{
RELEASEOBJECT(m_pPointer);
if ( NULL != cwsValue )
m_pPointer = new double(XmlUtils::GetDouble(cwsValue));
return *this;
}
#ifdef _WIN32
AVSINLINE void operator=(const BSTR& value)
{
RELEASEOBJECT(m_pPointer);
if (NULL != value)
m_pPointer = new double(XmlUtils::GetDouble(value));
}
#endif
AVSINLINE void operator=(const double& value)
{
RELEASEOBJECT(m_pPointer);
......@@ -505,13 +535,23 @@ namespace NSCommon
return false;
}
public:
nullable_bool& operator=(const wchar_t* cwsValue)
{
RELEASEOBJECT(m_pPointer);
if ( NULL != cwsValue )
m_pPointer = new bool(XmlUtils::GetBoolean2(cwsValue));
return *this;
}
#ifdef _WIN32
AVSINLINE void operator=(const BSTR& value)
{
RELEASEOBJECT(m_pPointer);
if (NULL != value)
m_pPointer = new bool(set((CString)value));
}
#endif
AVSINLINE void operator=(const bool& value)
{
RELEASEOBJECT(m_pPointer);
......
......@@ -33,8 +33,8 @@ namespace OOX
{
ReadAttributes( oReader );
if ( oReader.IsEmptyNode() )
return;
if ( !oReader.IsEmptyNode() )
oReader.ReadTillEnd();
}
virtual CString toXML() const
{
......
......@@ -31,10 +31,10 @@ namespace ComplexTypes
}
virtual void FromXML(XmlUtils::CXmlLiteReader& oReader)
{
//
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_ReadSingle( oReader, _T("w:val"), m_oVal )
WritingElement_ReadAttributes_End( oReader )
ReadAttributes(oReader);
if ( !oReader.IsEmptyNode() )
oReader.ReadTillEnd();
}
virtual CString ToString() const
{
......@@ -49,6 +49,15 @@ namespace ComplexTypes
return sResult;
}
private:
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
//
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_ReadSingle( oReader, _T("w:val"), m_oVal )
WritingElement_ReadAttributes_End( oReader )
}
public:
......@@ -76,11 +85,10 @@ namespace ComplexTypes
}
virtual void FromXML(XmlUtils::CXmlLiteReader& oReader)
{
//
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("w:type"), m_oType )
WritingElement_ReadAttributes_Read_else_if( oReader, _T("w:val"), m_oVal )
WritingElement_ReadAttributes_End( oReader )
ReadAttributes(oReader);
if ( !oReader.IsEmptyNode() )
oReader.ReadTillEnd();
}
virtual CString ToString() const
{
......@@ -102,6 +110,16 @@ namespace ComplexTypes
return sResult;
}
private:
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
//
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("w:type"), m_oType )
WritingElement_ReadAttributes_Read_else_if( oReader, _T("w:val"), m_oVal )
WritingElement_ReadAttributes_End( oReader )
}
public:
......@@ -129,10 +147,10 @@ namespace ComplexTypes
}
virtual void FromXML(XmlUtils::CXmlLiteReader& oReader)
{
//
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_ReadSingle( oReader, _T("w:val"), m_oVal )
WritingElement_ReadAttributes_End( oReader )
ReadAttributes(oReader);
if ( !oReader.IsEmptyNode() )
oReader.ReadTillEnd();
}
virtual CString ToString() const
{
......@@ -147,6 +165,15 @@ namespace ComplexTypes
return sResult;
}
private:
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
//
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_ReadSingle( oReader, _T("w:val"), m_oVal )
WritingElement_ReadAttributes_End( oReader )
}
public:
......@@ -174,11 +201,10 @@ namespace ComplexTypes
}
virtual void FromXML(XmlUtils::CXmlLiteReader& oReader)
{
//
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("w:type"), m_oType )
WritingElement_ReadAttributes_Read_else_if( oReader, _T("w:val"), m_oVal )
WritingElement_ReadAttributes_End( oReader )
ReadAttributes(oReader);
if ( !oReader.IsEmptyNode() )
oReader.ReadTillEnd();
}
virtual CString ToString() const
{
......@@ -200,6 +226,16 @@ namespace ComplexTypes
return sResult;
}
private:
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
//
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("w:type"), m_oType )
WritingElement_ReadAttributes_Read_else_if( oReader, _T("w:val"), m_oVal )
WritingElement_ReadAttributes_End( oReader )
}
public:
......@@ -227,10 +263,10 @@ namespace ComplexTypes
}
virtual void FromXML(XmlUtils::CXmlLiteReader& oReader)
{
//
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_ReadSingle( oReader, _T("w:val"), m_oVal )
WritingElement_ReadAttributes_End( oReader )
ReadAttributes(oReader);
if ( !oReader.IsEmptyNode() )
oReader.ReadTillEnd();
}
virtual CString ToString() const
{
......@@ -245,6 +281,15 @@ namespace ComplexTypes
return sResult;
}
private:
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
//
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_ReadSingle( oReader, _T("w:val"), m_oVal )
WritingElement_ReadAttributes_End( oReader )
}
public:
......
......@@ -30,11 +30,10 @@ namespace ComplexTypes
}
virtual void FromXML(XmlUtils::CXmlLiteReader& oReader)
{
//
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("w:displayText"), m_sDisplayText )
WritingElement_ReadAttributes_Read_else_if( oReader, _T("w:value"), m_sValue )
WritingElement_ReadAttributes_End( oReader )
ReadAttributes(oReader);
if ( !oReader.IsEmptyNode() )
oReader.ReadTillEnd();
}
virtual CString ToString() const
{
......@@ -57,6 +56,17 @@ namespace ComplexTypes
return sResult;
}
private:
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
//
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("w:displayText"), m_sDisplayText )
WritingElement_ReadAttributes_Read_else_if( oReader, _T("w:value"), m_sValue )
WritingElement_ReadAttributes_End( oReader )
}
public:
nullable<CString > m_sDisplayText;
......@@ -85,12 +95,10 @@ namespace ComplexTypes
}
virtual void FromXML(XmlUtils::CXmlLiteReader& oReader)
{
//
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("w:prefixMappings"), m_sPrefixMappings )
WritingElement_ReadAttributes_Read_else_if( oReader, _T("w:storeItemID"), m_sStoreItemID )
WritingElement_ReadAttributes_Read_else_if( oReader, _T("w:xpath"), m_sXPath )
WritingElement_ReadAttributes_End( oReader )
ReadAttributes(oReader);
if ( !oReader.IsEmptyNode() )
oReader.ReadTillEnd();
}
virtual CString ToString() const
{
......@@ -119,6 +127,17 @@ namespace ComplexTypes
return sResult;
}
private:
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
//
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("w:prefixMappings"), m_sPrefixMappings )
WritingElement_ReadAttributes_Read_else_if( oReader, _T("w:storeItemID"), m_sStoreItemID )
WritingElement_ReadAttributes_Read_else_if( oReader, _T("w:xpath"), m_sXPath )
WritingElement_ReadAttributes_End( oReader )
}
public:
......@@ -147,10 +166,10 @@ namespace ComplexTypes
}
virtual void FromXML(XmlUtils::CXmlLiteReader& oReader)
{
//
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_ReadSingle( oReader, _T("w:val"), m_oVal )
WritingElement_ReadAttributes_End( oReader )
ReadAttributes(oReader);
if ( !oReader.IsEmptyNode() )
oReader.ReadTillEnd();
}
virtual CString ToString() const
{
......@@ -160,6 +179,15 @@ namespace ComplexTypes
return sResult;
}
private:
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
//
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_ReadSingle( oReader, _T("w:val"), m_oVal )
WritingElement_ReadAttributes_End( oReader )
}
public:
......@@ -186,10 +214,10 @@ namespace ComplexTypes
}
virtual void FromXML(XmlUtils::CXmlLiteReader& oReader)
{
//
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_ReadSingle( oReader, _T("w:val"), m_oVal )
WritingElement_ReadAttributes_End( oReader )
ReadAttributes(oReader);
if ( !oReader.IsEmptyNode() )
oReader.ReadTillEnd();
}
virtual CString ToString() const
{
......@@ -199,6 +227,15 @@ namespace ComplexTypes
return sResult;
}
private:
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
//
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_ReadSingle( oReader, _T("w:val"), m_oVal )
WritingElement_ReadAttributes_End( oReader )
}
public:
......@@ -225,10 +262,10 @@ namespace ComplexTypes
}
virtual void FromXML(XmlUtils::CXmlLiteReader& oReader)
{
//
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_ReadSingle( oReader, _T("w:val"), m_oVal )
WritingElement_ReadAttributes_End( oReader )
ReadAttributes(oReader);
if ( !oReader.IsEmptyNode() )
oReader.ReadTillEnd();
}
virtual CString ToString() const
{
......@@ -238,6 +275,15 @@ namespace ComplexTypes
return sResult;
}
private:
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
//
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_ReadSingle( oReader, _T("w:val"), m_oVal )
WritingElement_ReadAttributes_End( oReader )
}
public:
......@@ -264,10 +310,10 @@ namespace ComplexTypes
}
virtual void FromXML(XmlUtils::CXmlLiteReader& oReader)
{
//
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_ReadSingle( oReader, _T("w:multiLine"), m_oMultiLine )
WritingElement_ReadAttributes_End( oReader )
ReadAttributes(oReader);
if ( !oReader.IsEmptyNode() )
oReader.ReadTillEnd();
}
virtual CString ToString() const
{
......@@ -277,6 +323,15 @@ namespace ComplexTypes
return sResult;
}
private:
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
//
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_ReadSingle( oReader, _T("w:multiLine"), m_oMultiLine )
WritingElement_ReadAttributes_End( oReader )
}
public:
......
......@@ -30,10 +30,10 @@ namespace ComplexTypes
}
virtual void FromXML(XmlUtils::CXmlLiteReader& oReader)
{
//
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_ReadSingle( oReader, _T("w:w"), m_oW )
WritingElement_ReadAttributes_End( oReader )
ReadAttributes(oReader);
if ( !oReader.IsEmptyNode() )
oReader.ReadTillEnd();
}
virtual CString ToString() const
{
......@@ -48,6 +48,15 @@ namespace ComplexTypes
return sResult;
}
private:
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
//
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_ReadSingle( oReader, _T("w:w"), m_oW )
WritingElement_ReadAttributes_End( oReader )
}
public:
......
......@@ -34,12 +34,10 @@ namespace ComplexTypes
}
virtual void FromXML(XmlUtils::CXmlLiteReader& oReader)
{
//
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("w:legacy"), m_oLegacy )
WritingElement_ReadAttributes_Read_else_if( oReader, _T("w:legacyIndent"), m_oLegacyIndent )
WritingElement_ReadAttributes_Read_else_if( oReader, _T("w:legacySpace"), m_oLegacySpace )
WritingElement_ReadAttributes_End( oReader )
ReadAttributes(oReader);
if ( !oReader.IsEmptyNode() )
oReader.ReadTillEnd();
}
virtual CString ToString() const
{
......@@ -51,6 +49,17 @@ namespace ComplexTypes
return sResult;
}
private:
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
//
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("w:legacy"), m_oLegacy )
WritingElement_ReadAttributes_Read_else_if( oReader, _T("w:legacyIndent"), m_oLegacyIndent )
WritingElement_ReadAttributes_Read_else_if( oReader, _T("w:legacySpace"), m_oLegacySpace )
WritingElement_ReadAttributes_End( oReader )
}
public:
......@@ -80,11 +89,10 @@ namespace ComplexTypes
}
virtual void FromXML(XmlUtils::CXmlLiteReader& oReader)
{
//
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("w:null"), m_oNull )
WritingElement_ReadAttributes_Read_else_if( oReader, _T("w:val"), m_sVal )
WritingElement_ReadAttributes_End( oReader )
ReadAttributes(oReader);
if ( !oReader.IsEmptyNode() )
oReader.ReadTillEnd();
}
virtual CString ToString() const
{
......@@ -101,6 +109,16 @@ namespace ComplexTypes
return sResult;
}
private:
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
//
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("w:null"), m_oNull )
WritingElement_ReadAttributes_Read_else_if( oReader, _T("w:val"), m_sVal )
WritingElement_ReadAttributes_End( oReader )
}
public:
......@@ -128,10 +146,10 @@ namespace ComplexTypes
}
virtual void FromXML(XmlUtils::CXmlLiteReader& oReader)
{
//
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_ReadSingle( oReader, _T("w:val"), m_oVal )
WritingElement_ReadAttributes_End( oReader )
ReadAttributes(oReader);
if ( !oReader.IsEmptyNode() )
oReader.ReadTillEnd();
}
virtual CString ToString() const
{
......@@ -141,6 +159,15 @@ namespace ComplexTypes
return sResult;
}
private:
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
//
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_ReadSingle( oReader, _T("w:val"), m_oVal )
WritingElement_ReadAttributes_End( oReader )
}
public:
......@@ -167,10 +194,10 @@ namespace ComplexTypes
}
virtual void FromXML(XmlUtils::CXmlLiteReader& oReader)
{
//
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_ReadSingle( oReader, _T("w:val"), m_oVal )
WritingElement_ReadAttributes_End( oReader )
ReadAttributes(oReader);
if ( !oReader.IsEmptyNode() )
oReader.ReadTillEnd();
}
virtual CString ToString() const
{
......@@ -180,6 +207,15 @@ namespace ComplexTypes
return sResult;
}
private:
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
//
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_ReadSingle( oReader, _T("w:val"), m_oVal )
WritingElement_ReadAttributes_End( oReader )
}
public:
......
......@@ -39,15 +39,10 @@ namespace ComplexTypes
}
virtual void FromXML(XmlUtils::CXmlLiteReader& oReader)
{
//
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("w:locked"), m_oLocked )
WritingElement_ReadAttributes_Read_else_if( oReader, _T("w:name"), m_sName )
WritingElement_ReadAttributes_Read_else_if( oReader, _T("w:qFormat"), m_oQFormat )
WritingElement_ReadAttributes_Read_else_if( oReader, _T("w:semiHidden"), m_oSemiHidden )
WritingElement_ReadAttributes_Read_else_if( oReader, _T("w:uiPriority"), m_oUiPriority )
WritingElement_ReadAttributes_Read_else_if( oReader, _T("w:unhideWhenUsed"), m_oUnhideWhenUsed )
WritingElement_ReadAttributes_End( oReader )
ReadAttributes(oReader);
if ( !oReader.IsEmptyNode() )
oReader.ReadTillEnd();
}
virtual CString ToString() const
{
......@@ -69,6 +64,20 @@ namespace ComplexTypes
return sResult;
}
private:
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
//
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_Read_if ( oReader, _T("w:locked"), m_oLocked )
WritingElement_ReadAttributes_Read_else_if( oReader, _T("w:name"), m_sName )
WritingElement_ReadAttributes_Read_else_if( oReader, _T("w:qFormat"), m_oQFormat )
WritingElement_ReadAttributes_Read_else_if( oReader, _T("w:semiHidden"), m_oSemiHidden )
WritingElement_ReadAttributes_Read_else_if( oReader, _T("w:uiPriority"), m_oUiPriority )
WritingElement_ReadAttributes_Read_else_if( oReader, _T("w:unhideWhenUsed"), m_oUnhideWhenUsed )
WritingElement_ReadAttributes_End( oReader )
}
public:
......
//#include "stdafx.h"
//#include "LIBXML2_LIB/stdafx.h"
#include "./libxml2.h"
......@@ -15,9 +16,9 @@ namespace XmlUtils
{
sXml += L" ";
sXml += std_string2string(NSFile::CUtf8Converter::GetUnicodeFromCharPtr(p->first.GetString(), p->first.GetLength(), TRUE));
sXml += L"='";
sXml += L"=\"";
sXml += std_string2string(NSFile::CUtf8Converter::GetUnicodeFromCharPtr(p->second.GetString(), p->second.GetLength(), TRUE));
sXml += L"'";
sXml += L"\"";
}
sXml += L">";
......@@ -47,9 +48,9 @@ namespace XmlUtils
{
oWriter.WriteString(L" ", 1);
oWriter.WriteString(std_string2string(NSFile::CUtf8Converter::GetUnicodeFromCharPtr(p->first.GetString(), p->first.GetLength(), TRUE)));
oWriter.WriteString(L"='", 2);
oWriter.WriteString(L"=\"", 2);
oWriter.WriteString(std_string2string(NSFile::CUtf8Converter::GetUnicodeFromCharPtr(p->second.GetString(), p->second.GetLength(), TRUE)));
oWriter.WriteString(L"'", 1);
oWriter.WriteString(L"\"", 1);
}
oWriter.WriteString(L">", 1);
......@@ -157,10 +158,13 @@ namespace XmlUtils
// 1 ,
while( TRUE )
{
if ( 0 == xmlTextReaderRead(reader) )
if ( 1 != xmlTextReaderRead(reader) )
break;
eNodeType = (XmlNodeType)xmlTextReaderNodeType(reader);
int nTempType = xmlTextReaderNodeType(reader);
if(-1 == nTempType)
break;
eNodeType = (XmlNodeType)nTempType;
nCurDepth = GetDepth();
if ( eNodeType == XmlNodeType_Text || eNodeType == XmlNodeType_Whitespace || eNodeType == XmlNodeType_SIGNIFICANT_WHITESPACE )
......@@ -184,7 +188,7 @@ namespace XmlUtils
}
nCurDepth = GetDepth();
if ( nCurDepth <= nDepth )
if ( nCurDepth < nDepth )
break;
if ( XmlNodeType_EndElement == eNodeType && nCurDepth == nDepth )
......@@ -203,15 +207,23 @@ namespace XmlUtils
}
CString CXmlNode::private_GetXml()
{
return private_GetXml(L"");
}
CString CXmlNode::private_GetXml(const CString& strDefaultValue)
{
if (NULL == m_pBase)
return L"";
return strDefaultValue;
return m_pBase->GetXml();
}
CString CXmlNode::private_GetXmlFast()
{
return private_GetXmlFast(L"");
}
CString CXmlNode::private_GetXmlFast(const CString& strDefaultValue)
{
if (NULL == m_pBase)
return L"";
return strDefaultValue;
CStringWriter oWriter;
m_pBase->GetXml(oWriter);
return oWriter.GetData();
......@@ -242,6 +254,10 @@ namespace XmlUtils
return true;
}
BOOL CXmlNode::FromXmlFile2(const CString& strXmlFilePath)
{
return FromXmlFile(strXmlFilePath.GetString()) ? TRUE : FALSE;
}
bool CXmlNode::FromXmlStringA(const std::string& sString)
{
CXmlDOMDocument* m_pDocument = new CXmlDOMDocument();
......@@ -255,7 +271,7 @@ namespace XmlUtils
m_pDocument->Parse();
if (NULL != m_pDocument->m_pNode)
if (NULL == m_pDocument->m_pNode)
{
delete m_pDocument;
return false;
......@@ -275,6 +291,28 @@ namespace XmlUtils
{
return (IsValid() ? m_pBase->m_sText : L"");
}
bool CXmlNode::GetTextIfExist(CString& sOutput)
{
bool bRes = false;
if(IsValid() && !m_pBase->m_sText.IsEmpty())
{
sOutput = m_pBase->m_sText;
bRes = true;
}
return bRes;
}
CString CXmlNode::GetTextExt(const CString& strDefaultValue)
{
//todo xml:space preserve
CString sRes;
if(!GetTextIfExist(sRes))
sRes = strDefaultValue;
return sRes;
}
CString CXmlNode::GetXml(const CString& strDefaultValue)
{
return private_GetXmlFast(strDefaultValue);
}
CString CXmlNode::GetName()
{
......@@ -350,11 +388,32 @@ namespace XmlUtils
return std_string2string(NSFile::CUtf8Converter::GetUnicodeFromCharPtr(pFind->second.GetString(), pFind->second.GetLength(), TRUE));
}
bool CXmlNode::GetAttributeIfExist(const CString& sName, CString& sOutput)
{
bool bRes = false;
if (IsValid())
{
std::map<CStringA, CStringA>::const_iterator pFind =
m_pBase->m_attributes.find(std_string2string(NSFile::CUtf8Converter::GetUtf8StringFromUnicode2(sName.GetString(), sName.GetLength())));
if (pFind != m_pBase->m_attributes.end())
{
sOutput = std_string2string(NSFile::CUtf8Converter::GetUnicodeFromCharPtr(pFind->second.GetString(), pFind->second.GetLength(), TRUE));
bRes = true;
}
}
return bRes;
}
CString CXmlNode::GetAttribute(const wchar_t* sName, const CString& _default)
{
return GetAttribute(CString(sName), _default);
}
CString CXmlNode::GetAttributeBase(const wchar_t* strAttributeName, const CString& strDefaultValue)
{
return GetAttribute(CString(strAttributeName), strDefaultValue);
}
int CXmlNode::GetAttributeInt(const CStringA& sName, const int& _default)
{
if (!IsValid())
......@@ -431,6 +490,16 @@ namespace XmlUtils
{
return ReadValueString(strName);
}
CString CXmlNode::GetAttributeOrValue(const CString& strAttributeName, const CString& strDefaultValue)
{
CString sRes;
if(!GetAttributeIfExist(strAttributeName, sRes))
{
if(!GetTextIfExist(sRes))
sRes = strDefaultValue;
}
return sRes;
}
CString CXmlNode::ReadValueString(const CString& sName, const CString& nDef)
{
CString sRes;
......@@ -439,6 +508,18 @@ namespace XmlUtils
sRes = oTemp.GetText();
return sRes;
}
int CXmlNode::ReadValueInt(const CString& str, const int& nDef)
{
int nRes = nDef;
CXmlNode oTemp;
if(GetNode(str, oTemp))
{
CString sText;
if(oTemp.GetTextIfExist(sText))
nRes = XmlUtils::GetInteger(sText);
}
return nRes;
}
CXmlNode CXmlNode::ReadNode(const CString& strNodeName)
{
......@@ -448,21 +529,21 @@ namespace XmlUtils
}
CXmlNode CXmlNode::ReadNodeNoNS(const CString& strNodeName)
{
CXmlNodes oNodes;
if (GetNodes(_T("*"), oNodes))
CXmlNode node;
if (IsValid())
{
int nCount = oNodes.GetCount();
int nCount = (int)m_pBase->m_nodes.size();
for (int i = 0; i < nCount; ++i)
{
CXmlNode node;
oNodes.GetAt(i, node);
if (strNodeName == GetNameNoNS(node.GetName()))
return node;
if (strNodeName == GetNameNoNS(m_pBase->m_nodes[i]->m_sName))
{
CXmlNodeBase* pBase = m_pBase->m_nodes[i];
pBase->AddRef();
node.m_pBase = pBase;
break;
}
}
}
CXmlNode node;
return node;
}
......@@ -495,26 +576,48 @@ namespace XmlUtils
CXmlNodes CXmlNode::GetNodes(const CString& sName)
{
CXmlNodes oNodes;
bool bGetAll = false;
if(_T("*") == sName)
bGetAll = true;
int nCount = (int)m_pBase->m_nodes.size();
for (int i = 0; i < nCount; ++i)
if (IsValid())
{
if (bGetAll || sName == m_pBase->m_nodes[i]->m_sName)
bool bGetAll = false;
if(_T("*") == sName)
bGetAll = true;
int nCount = (int)m_pBase->m_nodes.size();
for (int i = 0; i < nCount; ++i)
{
CXmlNode oNode;
oNode.m_pBase = m_pBase->m_nodes[i];
if (oNode.m_pBase)
oNode.m_pBase->AddRef();
oNodes.m_nodes.insert(oNodes.m_nodes.end(), oNode);
if (bGetAll || sName == m_pBase->m_nodes[i]->m_sName)
{
CXmlNode oNode;
oNode.m_pBase = m_pBase->m_nodes[i];
if (oNode.m_pBase)
oNode.m_pBase->AddRef();
oNodes.m_nodes.insert(oNodes.m_nodes.end(), oNode);
}
}
}
return oNodes;
}
BOOL CXmlNode::GetChilds(CXmlNodes& oXmlNodes)
{
BOOL bRes = FALSE;
if (IsValid())
{
int nCount = (int)m_pBase->m_nodes.size();
if(nCount > 0)
{
bRes = TRUE;
for (int i = 0; i < nCount; ++i)
{
CXmlNode oNode;
oNode.m_pBase = m_pBase->m_nodes[i];
if (oNode.m_pBase)
oNode.m_pBase->AddRef();
oXmlNodes.m_nodes.insert(oXmlNodes.m_nodes.end(), oNode);
}
}
}
return bRes;
}
bool CXmlNode::GetNodes(const CString& sName, CXmlNodes& oNodes)
{
oNodes = GetNodes(sName);
......
......@@ -353,10 +353,14 @@ namespace XmlUtils
if ( !IsValid() )
return FALSE;
if ( 0 == xmlTextReaderRead(reader) )
if ( 1 != xmlTextReaderRead(reader) )
return FALSE;
oNodeType = (XmlNodeType)xmlTextReaderNodeType(reader);
int nTempType = xmlTextReaderNodeType(reader);
if(-1 == nTempType)
return FALSE;
oNodeType = (XmlNodeType)nTempType;
return TRUE;
}
......@@ -372,7 +376,11 @@ namespace XmlUtils
if (1 != xmlTextReaderRead(reader))
break;
oNodeType = (XmlNodeType)xmlTextReaderNodeType(reader);
int nTempType = xmlTextReaderNodeType(reader);
if(-1 == nTempType)
break;
oNodeType = (XmlNodeType)nTempType;
}
if ( XmlNodeType_Element == oNodeType )
......@@ -390,17 +398,22 @@ namespace XmlUtils
XmlNodeType eNodeType = XmlNodeType_None;
int nCurDepth = -1;
while ( xmlTextReaderRead(reader) )
while ( 1 == xmlTextReaderRead(reader) )
{
eNodeType = (XmlNodeType)xmlTextReaderNodeType(reader);
nCurDepth = xmlTextReaderDepth(reader);
int nTempType = xmlTextReaderNodeType(reader);
int nTempDepth = xmlTextReaderDepth(reader);
if(-1 == nTempType || -1 == nTempDepth)
return FALSE;
eNodeType = (XmlNodeType)nTempType;
nCurDepth = nTempDepth;
if (nCurDepth <= nDepth)
//
if (nCurDepth < nDepth)
break;
if ( XmlNodeType_Element == eNodeType && nCurDepth == nDepth + 1 )
return TRUE;
else if ( XmlNodeType_EndElement == eNodeType && nCurDepth == nDepth + 1 )
else if ( XmlNodeType_EndElement == eNodeType && nCurDepth == nDepth )
return FALSE;
}
......@@ -413,25 +426,28 @@ namespace XmlUtils
if ( -2 == nDepth )
nDepth = GetDepth();
else if ( nDepth == GetDepth() && xmlTextReaderIsEmptyElement(reader) )
else if ( nDepth == GetDepth() && 0 != xmlTextReaderIsEmptyElement(reader) )
return TRUE;
XmlNodeType eNodeType = XmlNodeType_None;
int nCurDepth = -1;
// 1 ,
//
while( TRUE )
{
if ( 0 == xmlTextReaderRead(reader) )
if ( 1 != xmlTextReaderRead(reader) )
break;
eNodeType = (XmlNodeType)xmlTextReaderNodeType(reader);
int nTempType = xmlTextReaderNodeType(reader);
if(-1 == nTempType)
return FALSE;
eNodeType = (XmlNodeType)nTempType;
nCurDepth = GetDepth();
if ( nCurDepth <= nDepth )
if ( nCurDepth < nDepth )
break;
if ( XmlNodeType_EndElement == eNodeType && nCurDepth == nDepth + 1 )
if ( XmlNodeType_EndElement == eNodeType && nCurDepth == nDepth )
break;
}
......@@ -469,14 +485,17 @@ namespace XmlUtils
if ( !IsValid() )
return -1;
return xmlTextReaderDepth(reader);
int nTempDepth = xmlTextReaderDepth(reader);
if(-1 == nTempDepth)
return -1;
return nTempDepth;
}
inline BOOL IsEmptyNode()
{
if ( !IsValid() )
return FALSE;
return xmlTextReaderIsEmptyElement(reader);
return 0 != xmlTextReaderIsEmptyElement(reader) ? TRUE : FALSE;
}
inline const wchar_t* GetText()
......@@ -513,7 +532,7 @@ namespace XmlUtils
CString sResult;
if ( xmlTextReaderIsEmptyElement(reader) )
if ( 0 != xmlTextReaderIsEmptyElement(reader) )
return sResult;
int nDepth = GetDepth();
......@@ -546,14 +565,14 @@ namespace XmlUtils
if ( !IsValid() )
return FALSE;
return (BOOL)xmlTextReaderMoveToFirstAttribute(reader);
return 1 == xmlTextReaderMoveToFirstAttribute(reader) ? TRUE: FALSE;
}
inline BOOL MoveToNextAttribute()
{
if ( !IsValid() )
return FALSE;
return (BOOL)xmlTextReaderMoveToNextAttribute(reader);;
return 1 == xmlTextReaderMoveToNextAttribute(reader) ? TRUE: FALSE;
}
inline BOOL MoveToElement()
......@@ -561,7 +580,7 @@ namespace XmlUtils
if ( !IsValid() )
return FALSE;
return (BOOL)xmlTextReaderMoveToElement(reader);
return 1 == xmlTextReaderMoveToElement(reader) ? TRUE: FALSE;
}
private:
inline CString GetXml(bool bInner)
......@@ -582,10 +601,13 @@ namespace XmlUtils
//
while( TRUE )
{
if ( 0 == xmlTextReaderRead(reader) )
if ( 1 != xmlTextReaderRead(reader) )
break;
eNodeType = (XmlNodeType)xmlTextReaderNodeType(reader);
int nTempType = xmlTextReaderNodeType(reader);
if(-1 == nTempType)
break;
eNodeType = (XmlNodeType)nTempType;
nCurDepth = GetDepth();
if ( eNodeType == XmlNodeType_Text || eNodeType == XmlNodeType_Whitespace )
......@@ -603,7 +625,7 @@ namespace XmlUtils
}
nCurDepth = GetDepth();
if ( nCurDepth <= nDepth )
if ( nCurDepth < nDepth )
break;
if ( XmlNodeType_EndElement == eNodeType && nCurDepth == nDepth )
......@@ -739,10 +761,11 @@ namespace XmlUtils
return FromXmlFile(std::wstring(sFile), bRemoveRootNode);
}
bool FromXmlFile(const std::wstring& sFile, bool bRemoveRootNode = false);
BOOL FromXmlFile2(const CString& strXmlFilePath);
bool FromXmlStringA(const std::string& sString);
bool FromXmlString(const wchar_t* sString)
{
return FromXmlFile(std::wstring(sString));
return FromXmlString(std::wstring(sString));
}
bool FromXmlString(const std::wstring& sString);
......@@ -750,12 +773,17 @@ namespace XmlUtils
void Clear();
CString GetName();
CString GetText();
bool GetTextIfExist(CString& sOutput);
CString GetTextExt(const CString& strDefaultValue = _T(""));
CString GetXml(const CString& strDefaultValue = _T(""));
CString ReadAttributeBase(const wchar_t* bstrName);
template<typename T>
void ReadAttributeBase(const wchar_t* bsName, T& value)
{
value = GetAttribute(CString(bsName)).GetString();
CString sAttr;
if(GetAttributeIfExist(CString(bsName), sAttr))
value = sAttr.GetString();
}
CString ReadAttribute(const CString& strAttibuteName);
template<typename T>
......@@ -765,11 +793,10 @@ namespace XmlUtils
return;
std::map<CStringA, CStringA>::iterator p;
for (p = m_attributes.begin(); p != m_attributes.end(); ++p)
for (p = m_pBase->m_attributes.begin(); p != m_pBase->m_attributes.end(); ++p)
{
p->first.c_str(), p->first.length()
strNames.push_back(p->first);
strValues.push_back(p->second);
strNames.AddTail(std_string2string(NSFile::CUtf8Converter::GetUnicodeFromCharPtr(p->first.GetString(), p->first.GetLength(), TRUE)));
strValues.AddTail(std_string2string(NSFile::CUtf8Converter::GetUnicodeFromCharPtr(p->second.GetString(), p->second.GetLength(), TRUE)));
}
}
......@@ -779,7 +806,9 @@ namespace XmlUtils
CString GetAttribute(const CStringA& sName, const CString& _default = L"");
CString GetAttribute(const CString& sName, const CString& _default = L"");
CString GetAttribute(const wchar_t* sName, const CString& _default = L"");
CString GetAttributeBase(const wchar_t* strAttributeName, const CString& strDefaultValue = _T(""));
bool GetAttributeIfExist(const CString& sName, CString& sOutput);
int GetAttributeInt(const CStringA& sName, const int& _default = 0);
int GetAttributeInt(const CString& sName, const int& _default = 0);
int ReadAttributeInt(const CString& str, const int& nDef = 0);
......@@ -796,9 +825,12 @@ namespace XmlUtils
}
CString ReadNodeText(const CString& strName);
CString ReadValueString(const CString& sName, const CString& nDef = _T(""));
int ReadValueInt(const CString& str, const int& nDef = 0);
CString GetAttributeOrValue(const CString& strAttributeName, const CString& strDefaultValue = _T(""));
template <typename T>
void LoadArray(const CString& sName, std::vector<T>& arList)
void LoadArray(const CString& sName, CAtlArray<T>& arList)
{
CXmlNodes oNodes;
if (GetNodes(sName, oNodes))
......@@ -809,13 +841,13 @@ namespace XmlUtils
CXmlNode oItem;
oNodes.GetAt(i, oItem);
arList.reserve(arList.size() + 1);
arList.Add();
arList[i].fromXML(oItem);
}
}
}
template <typename T>
void LoadArray(const CString& sName, const CString& sSubName, std::vector<T>& arList)
void LoadArray(const CString& sName, const CString& sSubName, CAtlArray<T>& arList)
{
CXmlNode oNode;
if (GetNode(sName, oNode))
......@@ -826,6 +858,7 @@ namespace XmlUtils
CXmlNode GetNode(const CString& sName);
CXmlNodes GetNodes(const CString& sName);
BOOL GetChilds(CXmlNodes& oXmlNodes);
bool GetNode(const CString& sName, CXmlNode& oNode);
bool GetNodes(const CString& sName, CXmlNodes& oNodes);
......@@ -836,7 +869,9 @@ namespace XmlUtils
CString GetNameNoNS(const CString& strNodeName);
public:
CString private_GetXml();
CString private_GetXml(const CString& strDefaultValue = _T(""));
CString private_GetXmlFast();
CString private_GetXmlFast(const CString& strDefaultValue);
};
class CXmlNodes
......@@ -848,7 +883,10 @@ namespace XmlUtils
CXmlNodes() : m_nodes()
{
}
BOOL IsValid()
{
return TRUE;
}
int GetCount()
{
return (int)m_nodes.size();
......
//#include "stdafx.h"
#include "stringcommon.h"
std::wstring string2std_string(const CString& val)
......
......@@ -105,6 +105,13 @@ namespace XmlUtils
return _T("");
return strNodeName.Mid(0, nFind);
}
AVSINLINE CString GetNamespace(const wchar_t* strNodeName)
{
const wchar_t* find = wcschr(strNodeName, TCHAR(':'));
if(NULL == find)
return _T("");
return CString(strNodeName, find - strNodeName);
}
AVSINLINE CString GetNameNoNS(const CString& strNodeName)
{
int nFind = strNodeName.Find(TCHAR(':'));
......@@ -112,6 +119,13 @@ namespace XmlUtils
return strNodeName;
return strNodeName.Mid(nFind + 1);
}
AVSINLINE CString GetNameNoNS(const wchar_t* strNodeName)
{
const wchar_t* find = wcschr(strNodeName, TCHAR(':'));
if(NULL == find)
return CString(strNodeName);
return CString(find + 1);
}
// classes
class CXmlWriter
{
......
......@@ -68,10 +68,10 @@ namespace ComplexTypes
}
virtual void FromXML(XmlUtils::CXmlLiteReader& oReader)
{
//
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_ReadSingle( oReader, _T("val"), m_oVal )
WritingElement_ReadAttributes_End( oReader )
ReadAttributes(oReader);
if ( !oReader.IsEmptyNode() )
oReader.ReadTillEnd();
}
virtual CString ToString() const
{
......@@ -86,7 +86,15 @@ namespace ComplexTypes
return sResult;
}
private:
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
//
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_ReadSingle( oReader, _T("val"), m_oVal )
WritingElement_ReadAttributes_End( oReader )
}
public:
nullable<SimpleTypes::CDecimalNumber<> > m_oVal;
......@@ -108,10 +116,10 @@ namespace ComplexTypes
}
virtual void FromXML(XmlUtils::CXmlLiteReader& oReader)
{
//
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_ReadSingle( oReader, _T("val"), m_sVal )
WritingElement_ReadAttributes_End( oReader )
ReadAttributes(oReader);
if ( !oReader.IsEmptyNode() )
oReader.ReadTillEnd();
}
virtual CString ToString() const
{
......@@ -135,6 +143,15 @@ namespace ComplexTypes
return sResult;
}
private:
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
//
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_ReadSingle( oReader, _T("val"), m_sVal )
WritingElement_ReadAttributes_End( oReader )
}
public:
......@@ -157,10 +174,10 @@ namespace ComplexTypes
}
virtual void FromXML(XmlUtils::CXmlLiteReader& oReader)
{
//
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_ReadSingle( oReader, _T("val"), m_oVal )
WritingElement_ReadAttributes_End( oReader )
ReadAttributes(oReader);
if ( !oReader.IsEmptyNode() )
oReader.ReadTillEnd();
}
virtual CString ToString() const
{
......@@ -175,6 +192,15 @@ namespace ComplexTypes
return sResult;
}
private:
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
//
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_ReadSingle( oReader, _T("val"), m_oVal )
WritingElement_ReadAttributes_End( oReader )
}
public:
......@@ -197,10 +223,10 @@ namespace ComplexTypes
}
virtual void FromXML(XmlUtils::CXmlLiteReader& oReader)
{
//
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_ReadSingle( oReader, _T("val"), m_oVal )
WritingElement_ReadAttributes_End( oReader )
ReadAttributes(oReader);
if ( !oReader.IsEmptyNode() )
oReader.ReadTillEnd();
}
virtual CString ToString() const
{
......@@ -215,6 +241,15 @@ namespace ComplexTypes
return sResult;
}
private:
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
//
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_ReadSingle( oReader, _T("val"), m_oVal )
WritingElement_ReadAttributes_End( oReader )
}
public:
......@@ -237,10 +272,10 @@ namespace ComplexTypes
}
virtual void FromXML(XmlUtils::CXmlLiteReader& oReader)
{
//
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_ReadSingle( oReader, _T("val"), m_oVal )
WritingElement_ReadAttributes_End( oReader )
ReadAttributes(oReader);
if ( !oReader.IsEmptyNode() )
oReader.ReadTillEnd();
}
virtual CString ToString() const
{
......@@ -255,6 +290,15 @@ namespace ComplexTypes
return sResult;
}
private:
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
//
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_ReadSingle( oReader, _T("val"), m_oVal )
WritingElement_ReadAttributes_End( oReader )
}
public:
......@@ -277,10 +321,10 @@ namespace ComplexTypes
}
virtual void FromXML(XmlUtils::CXmlLiteReader& oReader)
{
//
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_ReadSingle( oReader, _T("val"), m_oVal )
WritingElement_ReadAttributes_End( oReader )
ReadAttributes(oReader);
if ( !oReader.IsEmptyNode() )
oReader.ReadTillEnd();
}
virtual CString ToString() const
{
......@@ -295,6 +339,15 @@ namespace ComplexTypes
return sResult;
}
private:
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
//
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_ReadSingle( oReader, _T("val"), m_oVal )
WritingElement_ReadAttributes_End( oReader )
}
public:
......@@ -317,10 +370,10 @@ namespace ComplexTypes
}
virtual void FromXML(XmlUtils::CXmlLiteReader& oReader)
{
//
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_ReadSingle( oReader, _T("val"), m_oVal )
WritingElement_ReadAttributes_End( oReader )
ReadAttributes(oReader);
if ( !oReader.IsEmptyNode() )
oReader.ReadTillEnd();
}
virtual CString ToString() const
{
......@@ -335,6 +388,15 @@ namespace ComplexTypes
return sResult;
}
private:
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
//
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_ReadSingle( oReader, _T("val"), m_oVal )
WritingElement_ReadAttributes_End( oReader )
}
public:
......@@ -357,10 +419,10 @@ namespace ComplexTypes
}
virtual void FromXML(XmlUtils::CXmlLiteReader& oReader)
{
//
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_ReadSingle( oReader, _T("val"), m_oVal )
WritingElement_ReadAttributes_End( oReader )
ReadAttributes(oReader);
if ( !oReader.IsEmptyNode() )
oReader.ReadTillEnd();
}
virtual CString ToString() const
{
......@@ -375,6 +437,15 @@ namespace ComplexTypes
return sResult;
}
private:
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
//
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_ReadSingle( oReader, _T("val"), m_oVal )
WritingElement_ReadAttributes_End( oReader )
}
public:
......@@ -397,10 +468,10 @@ namespace ComplexTypes
}
virtual void FromXML(XmlUtils::CXmlLiteReader& oReader)
{
//
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_ReadSingle( oReader, _T("val"), m_oVal )
WritingElement_ReadAttributes_End( oReader )
ReadAttributes(oReader);
if ( !oReader.IsEmptyNode() )
oReader.ReadTillEnd();
}
virtual CString ToString() const
{
......@@ -415,6 +486,15 @@ namespace ComplexTypes
return sResult;
}
private:
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
//
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_ReadSingle( oReader, _T("val"), m_oVal )
WritingElement_ReadAttributes_End( oReader )
}
public:
......@@ -437,10 +517,10 @@ namespace ComplexTypes
}
virtual void FromXML(XmlUtils::CXmlLiteReader& oReader)
{
//
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_ReadSingle( oReader, _T("val"), m_oVal )
WritingElement_ReadAttributes_End( oReader )
ReadAttributes(oReader);
if ( !oReader.IsEmptyNode() )
oReader.ReadTillEnd();
}
virtual CString ToString() const
{
......@@ -455,6 +535,15 @@ namespace ComplexTypes
return sResult;
}
private:
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
//
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_ReadSingle( oReader, _T("val"), m_oVal )
WritingElement_ReadAttributes_End( oReader )
}
public:
......
......@@ -50,6 +50,9 @@ namespace OOX
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
ReadAttributes(oReader);
if ( !oReader.IsEmptyNode() )
oReader.ReadTillEnd();
}
virtual EElementType getType () const
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment