Pugixml解析结果对不在节点内部的文本不返回错误

时间:2018-08-16 03:55:34

标签: c++ pugixml

我正在使用PugiXML解析字符串以检查它是否为有效XML。第一个字符串数据是我要查找的好结果,其他两个字符串应该是坏结果,但是最后一个字符串返回status_ok,尽管默认情况下选项parse_fragment是关闭的,并且我还在使用选项parsing_minimal,没有元素节点的文本仍然有效。我在做错什么吗?

bool ValidateSourceData(const string data)
{
  pugi::xml_document doc;
  pugi::xml_parse_result result =
     doc.load_buffer(data.c_str(), data.size(), pugi::parse_minimal);

  if (!result)                                                                                  
  {
    cerr << "Data [" << data << "] parsed with errors." << endl;
    cerr << "Description: "<< result.description() << endl;
    cerr << "Offset: " << result.offset << endl;
    return false;
  }
  cout << "Data [" << data << "] parsed without errors." << endl;
  return true;
}
int main()
{
  string data;
  data = "<node>good data</node>";
  if(ValidateSourceData(data))//parsed without errors
  {
    //DoSomething(data);
  }
  data = "bad data";
  if(ValidateSourceData(data))//parsed with errors
  {
    //DoSomething(data);
  }
  data = "bad<node>data</node>";
  if(ValidateSourceData(data))//parsed without errors
  {
    //DoSomething(data);
  }
  return 0;
}

0 个答案:

没有答案