Я новичок в libxml и сталкиваюсь со странным поведением: когда я пытаюсь получить доступ к содержимому и xmlNode, приложение молча завершает работу.
Мой код:
// Initialisation des pointeurs
xmlDocPtr doc;
xmlXPathContextPtr xpath_context;
xmlXPathObjectPtr xpath_objects;
// Chargement du document et création du contexte pour xpath
doc = xmlParseFile(nom.c_str());
xpath_context = xmlXPathNewContext(doc);
// Recherche via xpath
xpath_objects = xmlXPathEvalExpression((xmlChar*)("//personnage/nom"), xpath_context);
if(xpath_objects == NULL)
cout << "La balise nom est obligatoire !\n";
// Affichage des résultats
cout << "Nom de la balise : " << xpath_objects->nodesetval->nodeTab[0]->name << "\n";
cout << "Valeur de la balise : " << (char*)(xpath_objects->nodesetval->nodeTab[0]->content) << "\n";
cout << "Fin\n";
// Libération de la mémoire
xmlXPathFreeObject(xpath_objects);
xmlXPathFreeContext(xpath_context);
xmlFreeDoc(doc);
Мой XML-файл:
<personnage>
<nom>Toto</nom>
</personnage>
Описание xmlNode:
Structure xmlNode
struct _xmlNode {
void * _private : application data
xmlElementType type : type number, must be second !
const xmlChar * name : the name of the node, or the entity
struct _xmlNode * children : parent->childs link
struct _xmlNode * last : last child link
struct _xmlNode * parent : child->parent link
struct _xmlNode * next : next sibling link
struct _xmlNode * prev : previous sibling link
struct _xmlDoc * doc : the containing document End of common p
xmlNs * ns : pointer to the associated namespace
xmlChar * content : the content
struct _xmlAttr * properties : properties list
xmlNs * nsDef : namespace definitions on this node
void * psvi : for type/PSVI informations
unsigned short line : line number
unsigned short extra : extra data for XPath/XSLT
}
Полная документация доступна здесь: http://xmlsoft.org/html/libxml-tree.html#xmlNode
И это вывод:
Nom de la balise : nom
Valeur de la balise : damien@caturday:~$
Может ли кто-нибудь помочь мне, пожалуйста?
Спасибо,
Дэмиен