在C中使用xmlReadFile时出现警告/错误

时间:2012-05-08 03:42:23

标签: c xml parsing xml-parsing libxml2

<element1 type="type1" name="value1">
  <start play="no"/>
  <element2 aaa="AAA"/>
  <element2 bbb="BBB"/>
  <element3 ccc="CCC">
     <element4/><!-- play="no"/>-->
  </element3>
</element1>

我使用以下代码来解析它:

int parse( const char *xml) {

    printf("Entered\n");
    xmlDoc  *doc = NULL;
    doc = xmlReadFile(xml, NULL, 0);

    if (doc == NULL)
        printf("Could not parse file\n");
    else {
        printf("Success\n");
        xmlFreeDoc(doc);
    }

    xmlCleanupParser();
    return 0;
}

但我得到以下错误:

Entered
I/O warning : failed to load external entity "<element1 type="type1" name="value1">
  <start play="no"/>
  <element2 aaa="AAA"/>
  <element2 bbb="BBB"/>
  <element3 ccc="CCC">
     <element4/><!-- play="no"/>-->
  </element3>
</element1>

"
Could not parse file

1 个答案:

答案 0 :(得分:2)

我相信

的第一个论点
xmlReadFile(xml, NULL, 0);

是文件的名称,而不是XML字符串本身。该错误消息表明您已将实际的XML传递给该方法。我相信有一种xmlReadMemory()方法可以满足您的需求。