2011-10-03 103 views
-1

我在AC代碼以下列方式定義一個簡單的XML字符串:解析的XML值

char xmlstr[] = "<root><str1>Welcome</str1><str2>to</str2><str3>wonderland</str3></root>"; 

我想解析xmlstr獲取分配給STR1,STR2,STR3標籤的所有值。我正在使用libxml2 library。由於我在XML處理方面經驗不足,無法獲取所需標記的值。我嘗試了一些來自網絡的消息,但是我輸錯了結果。

回答

1

使用libxml2的解析你的字符串會是這個樣子做XML解析:

char xmlstr[] = ...; 
char *str1, *str2, *str3; 
xmlDocPtr doc = xmlReadDoc(BAD_CAST xmlstr, "http://someurl", NULL, 0); 
xmlNodePtr root, child; 

if(!doc) 
{ /* error */ } 

root = xmlDocGetRootElement(doc); 

現在我們已經從你的xml字符串中解析了一個DOM結構,我們可以通過迭代yo的所有子值來提取這些值ur root標籤:

for(child = root->children; child != NULL; child = child->next) 
{ 
    if(xmlStrcmp(child->name, BAD_CAST "str1") == 0) 
    { 
     str1 = (char *)xmlNodeGetContent(child); 
    } 

    /* repeat for str2 and str3 */ 
    ... 
} 
+0

在上面的url中有什麼意義。我要給我的程序 – user976211

+0

坦率地說,我不確定。文檔只聲明這被用作「* base *」,無論如何。我想這個小例子並不重要。 – Constantinius

+0

我也發現一樣。但是,感謝您的幫助。我可以做這個小補丁代碼嵌入到我的巨大應用程序。 – user976211