2012-05-08 40 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)上輕鬆找到它。 –