【问题标题】:TinyXML parsing a string in XML format returns NULL?TinyXML解析XML格式的字符串返回NULL?
【发布时间】:2011-05-26 22:06:03
【问题描述】:

我正在尝试使用 TinyXML 来解析 XML 格式的字符串。但返回指针始终为 NULL。我不确定代码的哪一部分设置错误。

TiXmlDocument docTemp;
const string strData = "<?xml version=\"1.0\" ?><Hello>World</Hello>";
const char* pTest = docTemp.Parse(strData.c_str(), 0 , TIXML_ENCODING_UTF8);
if(pTest == NULL){
    cout << "pTest is NULL" << endl;
}

它总是显示'pTest is NULL' 有什么想法吗?

非常感谢!

【问题讨论】:

    标签: tinyxml


    【解决方案1】:

    它应该在出错的情况下返回 0 但看起来 TiXmlBase::SkipWhiteSpace 中存在错误,如果右括号后没有字符则返回 0,但如果有空格或 \r 或 \ n 它返回指针。因此,您有 2 个选项在右括号后添加一些白色字符或在 SkipWhiteSpace 的开头修改以下行:

    if ( !p || !*p )
    {
        return 0;
    }
    

    类似于:

    if ( !p )
    {
       return 0;
    }
    if (!*p)
    {
       return p;
    }
    

    【讨论】:

      【解决方案2】:
       if(pTest == NULL && docTemp->Error() ){
              cout << "pTest is NULL" << endl;
          }
      

      【讨论】:

        【解决方案3】:

        似乎解析成功时返回 null。

        你能看看 docTemp.RootElement() 是否包含一个有效的元素吗?

        【讨论】:

          【解决方案4】:

          看起来TiXMLDocument::Parse在失败的情况下返回NULL,当解析成功时,指针指向右尖括号旁边的字符。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-08-15
            • 2021-04-06
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多