在libxml上,我如何获得此属性值?

时间:2010-08-22 03:21:44

标签: xml libxml2

对于具有

的XML
<?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);

但是如何获得'count'的值? ( “计数=” 24 “”)

e.g。

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

不对。

1 个答案:

答案 0 :(得分:1)

xmlNodeGetContent的定义是

  

读取节点的值,这可以   要么直接由文字携带   这个节点,如果它是TEXT节点或   所携带值的聚合字符串   通过这个节点的孩子(TEXT和   ENTITY_REF)。实体引用是   取代

因此发生的事情是cur_node->children->next实际指向<source>节点,而不是<float_array...节点。对xmlNodeGetContent 的调用显示,因为它从包含的节点获取内容。

xmlGetProp的调用不返回任何内容,因为您在错误的节点上调用它。 您需要确保在正确的节点上调用xmlGetProp