zoukankan      html  css  js  c++  java
  • tinyxml解析CDATA

    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;
    }

  • 相关阅读:
    继承
    redis面试题收集
    spring知识点
    jvm类加载
    jvm回收机制
    HashMap和ConcurrentHashMap
    java基础
    spring-quartz整合
    alibaba-sentinel-1.8变化
    springcloud执行流程理解图
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13318545.html
Copyright © 2011-2022 走看看