TinyXML 的 TiXmlElement::GetText() 有可能返回 NULL

参考: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

     

  • 正常 XML 格式,即非 CDATA 格式的节点的 text 如果前后有空白字符,TiXmlElement::GetText() 返回的字符串去掉首尾的空白字符
  • CDATA 格式的节点的 text 如果前后有空白字符,TiXmlElement::GetText() 返回的字符串不会去掉首尾的空白字符

你可能感兴趣的:(TinyXML 的 TiXmlElement::GetText() 有可能返回 NULL)