EZXML C 解析 API

EZXML C Parsing API

我可以这样使用 ezxml_get 函数来计算父标签 books 中子 book 标签的数量吗?如果未找到子标签,函数 returns NULL.

int books_cnt = 0;
     for(i=0; i<100; i++)
     {
     if((ezxml_get(xml_file, "books", 0, "book", i) != NULL)
         {
            books_cnt++;
         }
     }

这就是 xml 的样子

   <books>
        <book>
        </book>
        <book>
        </book>
         .
         .
         .
         .
   </books>

是的,你可以。你没试过吗?快速查看 ezxml page,使用 ezxml_child() 并循环遍历链表,同时计算自己的数量可能要好得多(就性能而言)

[edit] 以完全阐明......网站给出了这个示例代码:

for (team = ezxml_child(f1, "team"); team; team = team->next) {
    teamname = ezxml_attr(team, "name");
    for (driver = ezxml_child(team, "driver"); driver; driver = driver->next) {
        printf("%s, %s: %s\n", ezxml_child(driver, "name")->txt, teamname,
               ezxml_child(driver, "points")->txt);
    }
}

所以只需使用类似外循环的东西并计数,例如:

int i = 0;
for (book = ezxml_child(xml_file, "book"); book; book = book->next) ++i;