Я использую libxml2 и C ++. Следующая функция падает здесь return (char*)cur->content;
. Когда я изменяю его на return (char*)cur->name;
, он возвращает attribute
, которое является именем тега То, что я хочу, это 1, 2 и 3 (на основе XML-файла под кодом C ++). Что я делаю не так?
char* xml2sdf::getId(xmlNode* part){
xmlNode* cur = part->xmlChildrenNode;
// get the id
while (cur != NULL) {
if ( !xmlStrcmp(cur->name, (const xmlChar *)"attribute") ) {
xmlAttrPtr attr = cur->properties;
if( !xmlStrcmp( attr->children->content, (const xmlChar*)"id" ) ){
return (char*)cur->content;
}
}
cur = cur->next;
}
}
}
Часть файла XML, которую он анализирует:
<part ref="part10" name="part10">
<attribute name="face">7</attribute>
<attribute name="id">1</attribute>
</part>
<part ref="part20" name="part20">
<attribute name="face">5</attribute>
<attribute name="id">2</attribute>
</part>
<part ref="part30" name="part30">
<attribute name="face">9</attribute>
<attribute name="id">3</attribute>
</part>