Cコードのスキーマファイルを使用してXMLファイルを検証しようとしています。検証は正常に行われ、ファイルが有効か無効かが示されます。
しかし、私の問題は、有効/無効のみを印刷することです。それが無効だった場合に備えて、xmlファイルに何が欠けていたかについてのレポート/出力があるはずです。XMLファイルの行番号のようなものである可能性があります。
願わくば、私は自分自身を明確にしました。
これが私のCコードです:-
int validateXmlFile()
{
int iError = 0;
xmlDocPtr pDoc;
xmlDocPtr pSchemaDoc;
xmlSchemaParserCtxtPtr pSchemaCtxt;
xmlSchemaPtr pSchema;
xmlSchemaValidCtxtPtr pValidCtxt;
char * xmlFilename = "C:\\Documents and Settings\\pbhatia\\Desktop\\Schema\\ipt_config.xml";
char * schemaFilename = "C:\\Documents and Settings\\pbhatia\\Desktop\\Schema\\ipt_config.xsd";
PRNT(printf("Schema file : %s \n", schemaFilename));
PRNT(printf("XML file : %s \n", xmlFilename));
pDoc = xmlReadFile(xmlFilename, NULL, XML_PARSE_NONET);
if (!pDoc)
return -1;
pSchemaDoc = xmlReadFile(schemaFilename, NULL, XML_PARSE_NONET);
if (!pSchemaDoc)
return -2;
pSchemaCtxt = xmlSchemaNewDocParserCtxt(pSchemaDoc);
if (!pSchemaCtxt)
return -3;
pSchema = xmlSchemaParse(pSchemaCtxt);
if (!pSchema)
return -4;
pValidCtxt = xmlSchemaNewValidCtxt(pSchema);
if(!pValidCtxt)
return -5;
// Attempting to validate xml with schema
xmlSchemaFreeParserCtxt(pSchemaCtxt);
xmlFreeDoc(pSchemaDoc);
iError = xmlSchemaValidateDoc(pValidCtxt, pDoc);
if (iError == 0)
PRNT(printf("Document in %s is valid \n", xmlFilename));
else
PRNT(printf("Document in %s is NOT valid \n", xmlFilename));
xmlSchemaFree(pSchema);
xmlFreeDoc(pDoc);
return 0;
}
ありがとう、プリヤンカ