C 使用libxml解析XML檔案

2021-06-20 07:12:57 字數 1501 閱讀 7901

opencv中使用filestorage建立和解析xml檔案。但filestorage不能處理節點為空的情況,且對屬性也不友好。例子見這裡。

對於一段如下的xml檔案:

<?xml version="1.0"?>

1

libxml處理的函式如下:

string getlabes(char *szdocname, map,rect > &labels) 

curnode = xmldocgetrootelement(doc); //確定文件根元素

if (null == curnode)

if (xmlstrcmp(curnode->name, bad_cast "message"))

curnode = curnode->xmlchildrennode;

xmlnodeptr propnodeptr = curnode;

xmlnodeptr itemnodeptr;

while(curnode != null)

if (!xmlstrcmp(curnode->name, bad_cast "items"))

curnode = curnode->next;

} xmlattrptr attrptr = propnodeptr->properties;

while (attrptr != null)

// item

while (itemnodeptr != null)

// label

xmlnodeptr childnodeptr = itemnodeptr->xmlchildrennode;

while (childnodeptr != null)

if (!xmlstrcmp(attrptr->name, bad_cast "t"))

if (!xmlstrcmp(attrptr->name, bad_cast "r"))

if (!xmlstrcmp(attrptr->name, bad_cast "b"))

if (!xmlstrcmp(attrptr->name, bad_cast "id"))

attrptr = attrptr->next;

}if(!(l==0&&t==0&&b==0&&r==0))

itemnodeptr = itemnodeptr->next;

} xmlfreedoc(doc);

return filename;

}

用map的iterator輸出:

C 使用libxml解析XML檔案

opencv中使用filestorage建立和解析xml檔案。但filestorage不能處理節點為空的情況,且對屬性也不友好。例子見這裡。對於一段如下的xml檔案 1libxml處理的函式如下 string getlabes char szdocname,map,rect labels curno...

使用hivexmlserde解析xml檔案

hive xml serde是乙個基於hive serde 序列化 反序列化 框架的xml處理庫。它依賴於apache mahout專案中的xmlinputformat,根據特定的開始和結束標記將輸入檔案分解成xml片段。xml serde的本質其實是使用xpath處理器查詢xml片段來填充hive...

Python建立XML檔案,C 解析XML檔案

最近在做一些 移植工作,為了測試正確性,要拿同樣的輸入資料測試,於是打算使用xml來儲存資料,c 進行解析。簡單做個記錄。資料來源使用python生成xml 目標是生成下面的樣子,直接看 吧,python這個xml庫用起來比較簡單,看個例子就會了。c 解析xml qt qdomdocument 剛好...