1

libxml2 lib を使用して 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

to の最後のパラメータxmlReaderForFile(filename, NULL, 0);は、一連のオプション フラグです。これらの flags のドキュメントを読むと、設定したいオプションが 2 つあることがわかります: XML_PARSE_NOERRORXML_PARSE_NOWARNING. libxml2 と xmlReaderForFile をググっただけです。

次のようにフラグを一緒にする必要があります。

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