XmlNodePtr XmlDoc::Parse(DataStreamPtr const & pSource) { pSource->Seekg(0, std::ios_base::end); int len = static_cast<int>(pSource->Tellg()); pSource->Seekg(0, std::ios_base::beg); m_cXmlSrcs.resize(len + 1, 0); pSource->Read(&m_cXmlSrcs[0], len); static_cast<rapidxml::xml_document<>*>(m_pDoc.get())->parse<0>(&m_cXmlSrcs[0]); m_pNodeRoot = MakeSharedPtr<XmlNode>(static_cast<rapidxml::xml_document<>*>(m_pDoc.get())->first_node()); return m_pNodeRoot; }