1

我想使用 libxml2 库来解析我的 xml 文件。现在,当我有一些错误的 xml 文件时,lib 本身正在打印大量错误消息。

下面是一些示例代码

reader = xmlReaderForFile(filename, NULL, 0);
if (reader != NULL) {
   ret = xmlTextReaderRead(reader);
   while (ret == 1) {
       printf("_________________________________\n");
       processNode(reader);
       ret = xmlTextReaderRead(reader);
       printf("_________________________________\n");
   }
   xmlFreeTextReader(reader);
   if (ret != 0) {
       fprintf(stderr, "%s : failed to parse\n", filename);
   }
}

在上面的例子中,如果我有错误的 xml 文件,我会得到这样的错误

my.xml:4: parser error : attributes construct error
 include type="text"this is text. this might be excluded in the next occurrence 

my.xml:4: parser error : Couldn't find end of Start Tag include
 include type="text"this is text. this might be excluded in the next occurrence 

my.xml : failed to parse

相反,我只想返回一些错误号。并摆脱这些丑陋的 lib 消息。

我该怎么办 ?

4

1 回答 1

3

最后一个参数xmlReaderForFile(filename, NULL, 0);是一组选项标志。阅读这些标志的文档,我看到您可能想要设置两个选项: XML_PARSE_NOERRORXML_PARSE_NOWARNING. 请注意,我没有尝试过任何这些,我只是用谷歌搜索了 libxml2 和 xmlReaderForFile。

您将需要像这样将标志或标志放在一起:

reader = xmlReaderForFile(filename, NULL, XML_PARSE_NOERROR | XML_PARSE_NOWARNING);
于 2012-04-17T10:32:44.947 回答