2010-08-22 104 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