Как получить атрибуты в libxml2 и сохранить в карте stl для С++?

Я хочу получить атрибуты xml с помощью libxml2 и сохранить их на карте stl в C++?


person joi    schedule 24.10.2011    source источник
comment
Можете ли вы объяснить более подробно, что вы пытаетесь сделать? Кроме того, какой API синтаксического анализа в libXML2 вы используете?   -  person Nicol Bolas    schedule 24.10.2011
comment
Я хочу получить все атрибуты для каждого узла (узлов) и сохранить их на карте, чтобы мне было легко получить все атрибуты конкретного узла, который я хочу. Я также создаю класс для каждого узла и сохраняю его в контейнер списка.   -  person joi    schedule 24.10.2011


Ответы (1)


Если вы уже проанализировали свою XML-строку/файл и уже имеете узел, для которого хотите сопоставить свойства, это должно быть примерно так:

xmlNodePtr yournode = ...;
std::map<std::string, std::string> yourmap;

for(xmlAttrPtr attr = yournode->properties; attr != NULL; attr = attr->next)
{
    yourmap[attr->name] = xmlGetProp(yournode, attr->name);
}

Конечно, пространства имен в этом примере не рассматриваются. Если вы используете пространства имен, вы можете попробовать следующее:

yourmap[attr->name] = xmlGetNsProp(yournode, attr->name, attr->ns->href);

Конечно, вы должны тщательно проверить значения NULL.

person Constantinius    schedule 24.10.2011