参考:http://stackoverflow.com/questions/7942191/how-to-handle-tinyxml-null-pointer-returned-on-gettext
在XML某个节点的text为空的情况下,TinyXML 的 TiXmlElement::GetText() 会返回 NULL。
这时,需要先保存 GetText() 的返回值,然后判断它是否为空,如果不为空,才真正使用。例如:
TiXmlElement *pElem;
std::string StatusResponse;
pElem = hResponse.FirstChild("StatusResponse").Element();
if (pElem) {
const char * text = pElem->GetText();
if (text) {
StatusResponse = text;
}
}
【注意】
- 即使像下面这样的节点,它的 text 全部是空白字符,TiXmlElement::GetText() 也会返回 NULL
<code> </code>
- 正常 XML 格式,即非 CDATA 格式的节点的 text 如果前后有空白字符,TiXmlElement::GetText() 返回的字符串会去掉首尾的空白字符
- CDATA 格式的节点的 text 如果前后有空白字符,TiXmlElement::GetText() 返回的字符串不会去掉首尾的空白字符