Используя tinyXml2, я могу разобрать
<MSG_TIME>2010-07-01 14:28:20</ MSG_TIME>
просто отлично, но
<MSG_TIME></ MSG_TIME>
а также
<MSG_TIME />
оба бросают исключения в C ++, когда это совершенно правильный XML (насколько мне известно). У кого-нибудь есть решение или предложение для этого? Я не контролирую источник этого XML, и мне нужно быть терпимым к ошибкам.
Этот ответ предполагает, что вы пытаетесь загрузить действительный XML с пустым элементом.
XMLElement::GetText()
возвращается nullptr
если элемент пуст, то вы можете сделать простую проверку следующим образом:
std::string szData;
// Get the element
XMLElement pElement = xmlDoc.FirstChildElement("MyElement");
// Check whether the element contains data & if so, extract it as text
if (pElement->GetText() != nullptr) szData = poElement->GetText();
Этот вопрос на самом деле указал на ошибку с TinyXML2 учебник Я написал несколько месяцев назад, так что спасибо за публикацию! 🙂
Других решений пока нет …