如何用tinyxml2解析空元素?

时间:2012-12-31 21:37:54

标签: c++ tinyxml2

使用tinyXml2,我可以很好地解析

<MSG_TIME>2010-07-01 14:28:20</MSG_TIME>
,但
<MSG_TIME></MSG_TIME>
<MSG_TIME/>
在C ++完全有效的XML(据我所知)时会抛出异常。有人对此有解决方案或建议吗?我不控制这个XML的来源,我需要容错。

1 个答案:

答案 0 :(得分:3)

此答案假设您尝试使用空元素加载有效的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 tutorial的一个错误,所以感谢发布它! :)