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

我用下面的代码来分析它/错误:警告使用C中xmlReadFile

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

这一个'<! - play =“no”/> - >'看起来很可怕。 – 2012-05-08 03:50:18

+0

什么是'doc = xmlReadFile(xml,NULL,0)中的'xml';'?它是实际XML文本文件的名称吗? –

回答

2

我相信,第一个参数

xmlReadFile(xml, NULL, 0); 

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

+0

我认为你是对的。我有一个将文件转换为XML流的中间函数。我应该用什么来读取XML流? – hari

+1

使用'xmlReadMemory()',你可以在代码示例下的[libXml2网站](http://xmlsoft.org/examples/index.html)上轻松找到它。 –