2010-08-22 68 views
0

對於具有關於libxml,我怎樣才能得到這個屬性值?

<?xml version="1.0" encoding="utf-8"?> 
<COLLADA version="1.4.0" xmlns="http://www.collada.org/2005/11/COLLADASchema"> 
<library_geometries> 
    <geometry id="Cube"> 
    <mesh> 
    <source id="Cube"> 
    <float_array count="24" ">1 2 3</float_array> 
[..] 

我得到正確 「1 2 3」 字符串以

if (!xmlStrcmp(cur_node->name, (const xmlChar *) "mesh") 
    printf(": %s\n",xmlNodeGetContent(cur_node->children->next); 

但是我如何才能 '計數' 的值的XML? (「count =」24「」)

例如

printf(": %s\n", xmlGetProp(cur_node->children->next,(const xmlChar *)"count")); 

是不正確的。

回答

1

xmlNodeGetContent定義是

閱讀一個節點的值,這可以是 或者通過 如果它是一個文本節點或值的 骨料串進行 該節點直接攜帶的文本由此節點子節點(TEXT和 ENTITY_REF)。實體引用是 取代。

因此發生的事情是,cur_node->children->next<source>節點,而不是<float_array...節點實際指向。致電xmlNodeGetContent出現工作,因爲它是從包含的節點獲取內容。

xmlGetProp的調用不會返回任何內容,因爲您在錯誤的節點上調用它。 您需要確保您在正確的節點上調用xmlGetProp