tinyxml是一个小型而功能强健的开源XML处理库。但是在对<![CDATA[ ]]>的数据通过函数GetText()进行读取的时候,总是只能回取到第一个<![CDATA[ ]]>数据里的内容,查看源码,发现解析是没有任何问题的,tinyxml只是把它接下来的<![CDATA[ ]]>数据放到了另外一个节点进行了保存。我们可以修改GetText()来获取全部的数据,这样上层调用的时候就不要对<![CDATA[ ]]>数据进行另类处理了。
源码下载(http://www.grinninglizard.com/tinyxml/index.html)
修改前:(tinyxml.cpp)
const char* TiXmlElement::GetText() const
{
const TiXmlNode* child = this->FirstChild();
if ( child ) {
const TiXmlText* childText = child->ToText();
if ( childText ) {
return childText->Value();
}
}
return 0;
}
修改后:
const char* TiXmlElement::GetText() const
{
TiXmlString *strCdata = (TiXmlString *)&m_strCdata;
strCdata->clear();
const TiXmlNode* child = this->FirstChild();
if ( child ) {
const TiXmlText* childText = child->ToText();
if (childText->cdata)
{
while (child)
{
strCdata->append(child->Value(),child->value.length());
child = child->next;
}
return m_strCdata.c_str();
}
else
{
if ( childText ) {
return childText->Value();
}
}
}
return 0;
}
tinyxml解析CDATA
转载上一篇:动态调用 WebService
下一篇:字符串转换成JSON的三种方式
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Unity解析key不确定的Json
Unity解析key不确定的Json
JSON Unity -
JSON巨匠:FastJSON的序列化解析
云上序列化之王:掌握阿里云FastJSON的技术精髓...
JSON FastJSON JAVA