2015-07-07 5 views
1

Как анализировать значения, если у меня есть несколько тегов, например, в коде выше.ezxml xml parsing api

<formula1> 
<team name="McLaren"> 
<driver> 
<name>Abcd</name> 
<points>112</points> 
</driver> 
<driver> 
<name>Juan Pablo Montoya</name> 
<points>60</points> 
</driver> 
</team> 
</formula1> 

<formula1> 
<team name="McLaren"> 
<driver> 
<name>Kimi Raikkonen</name> 
<points>112</points> 
</driver> 
<driver> 
<name>EFGH</name> 
<points>60</points> 
</driver> 
</team> 
</formula1> 

Я был в состоянии напечатать значения между тегами в первом Formula1() с этим кодом, например:

ezxml_t f1 = ezxml_parse_file("formula1.xml"); 

printf("%s\n", ezxml_get(f1, "team", 0, "driver", 1, "name", -1)->txt); 
ezxml_free(f1); 

Но не знаю, как печатать значения из второго.

+0

вам нужен корневой тег. (Тег вокруг всего) – BLUEPIXY

+0

или удалить ' ' – BLUEPIXY

ответ

1

вариант 1. обертка

XML:

<root> 
<formula1> 
<team name="McLaren"> 
<driver> 
<name>Abcd</name> 
<points>112</points> 
</driver> 
<driver> 
<name>Juan Pablo Montoya</name> 
<points>60</points> 
</driver> 
</team> 
</formula1> 

<formula1> 
<team name="McLaren"> 
<driver> 
<name>Kimi Raikkonen</name> 
<points>112</points> 
</driver> 
<driver> 
<name>EFGH</name> 
<points>60</points> 
</driver> 
</team> 
</formula1> 
</root> 

код:

printf("%s\n", ezxml_get(f1, "formula1", 0, "team", 0, "driver", 1, "name", -1)->txt); 
printf("%s\n", ezxml_get(f1, "formula1", 1, "team", 0, "driver", 0, "name", -1)->txt); 

вариант 2. унифицировать

XML:

<formula1> 
<team name="McLaren"> 
<driver> 
<name>Abcd</name> 
<points>112</points> 
</driver> 
<driver> 
<name>Juan Pablo Montoya</name> 
<points>60</points> 
</driver> 
</team> 

<team name="McLaren"> 
<driver> 
<name>Kimi Raikkonen</name> 
<points>112</points> 
</driver> 
<driver> 
<name>EFGH</name> 
<points>60</points> 
</driver> 
</team> 
</formula1> 

код:

printf("%s\n", ezxml_get(f1, "team", 0, "driver", 1, "name", -1)->txt); 
printf("%s\n", ezxml_get(f1, "team", 1, "driver", 0, "name", -1)->txt);