void CSolarSystemDoc::ParseXmlDocument(MSXML::IXMLDOMDocumentPtr& pDocument) { m_SolarSystem.m_Bodies.clear(); { MSXML::IXMLDOMNodeListPtr pSolarSystem = pDocument->getElementsByTagName(L"SolarSystem"); if (pSolarSystem) { pSolarSystem->reset(); MSXML::IXMLDOMNodePtr pRecordNode = pSolarSystem->nextNode(); m_Thread.m_timestep = static_cast<unsigned int>(GetXmlIntValue(pRecordNode, L"TimeStep", 300)); } } MSXML::IXMLDOMNodeListPtr pRecordsList = pDocument->getElementsByTagName(L"Body"); if (pRecordsList) { pRecordsList->reset(); MSXML::IXMLDOMNodePtr pRecordNode = pRecordsList->nextNode(); //for each group in the xml file while (pRecordNode) { m_SolarSystem.m_Bodies.emplace_back(MolecularDynamics::Body()); m_SolarSystem.m_BodyProperties.emplace_back(BodyProperties()); LoadBodyXml(pRecordNode, m_SolarSystem.m_Bodies.back(), m_SolarSystem.m_BodyProperties.back()); pRecordNode = pRecordsList->nextNode(); } } m_SolarSystem.m_Bodies.shrink_to_fit(); m_SolarSystem.m_BodyProperties.shrink_to_fit(); }