我在AC代碼以下列方式定義一個簡單的XML字符串:解析的XML值
char xmlstr[] = "<root><str1>Welcome</str1><str2>to</str2><str3>wonderland</str3></root>";
我想解析xmlstr獲取分配給STR1,STR2,STR3標籤的所有值。我正在使用libxml2 library。由於我在XML處理方面經驗不足,無法獲取所需標記的值。我嘗試了一些來自網絡的消息,但是我輸錯了結果。
我在AC代碼以下列方式定義一個簡單的XML字符串:解析的XML值
char xmlstr[] = "<root><str1>Welcome</str1><str2>to</str2><str3>wonderland</str3></root>";
我想解析xmlstr獲取分配給STR1,STR2,STR3標籤的所有值。我正在使用libxml2 library。由於我在XML處理方面經驗不足,無法獲取所需標記的值。我嘗試了一些來自網絡的消息,但是我輸錯了結果。
使用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 */
...
}
在上面的url中有什麼意義。我要給我的程序 – user976211
坦率地說,我不確定。文檔只聲明這被用作「* base *」,無論如何。我想這個小例子並不重要。 – Constantinius
我也發現一樣。但是,感謝您的幫助。我可以做這個小補丁代碼嵌入到我的巨大應用程序。 – user976211
我會很有幫助,如果你能爲此提供c代碼,就像你熟悉mxml一樣。 – user976211