【问题标题】:Warning/Error using xmlReadFile in C在 C 中使用 xmlReadFile 的警告/错误
【发布时间】:2012-05-16 13:28:18
【问题描述】:
<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

【问题讨论】:

  • 这个&lt;!-- play="no"/&gt;--&gt; 看起来很吓人。
  • doc = xmlReadFile(xml, NULL, 0); 中的xml 是什么?它是实际 XML 文本的文件名吗?

标签: c xml parsing xml-parsing libxml2


【解决方案1】:

我相信第一个论点

xmlReadFile(xml, NULL, 0);

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

【讨论】:

  • 我认为你是对的。我有一个将文件转换为 XML 流的中间函数。我应该使用什么来读取 XML 流?
  • 使用xmlReadMemory(),您可以在代码示例下的libXml2 website 上轻松找到。
猜你喜欢
  • 2013-04-24
  • 1970-01-01
  • 2014-09-08
  • 1970-01-01
  • 2018-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-17
相关资源
最近更新 更多