Имеется документ XML, а в нём строка *:
<op_mode value="2460" comment="Режим работы: 0 - основной, 0х8000 - технологический"/>
Требуется извлечь из строки * численное значение параметра value средствами языка 'Си' с использованием библиотеки libxml2.
Удалось получить указатель на узел для этой строки *: cur, cur->name = "op_mode".
Удалось получить у этого узла properties, причём properties->name = "value".
Однако попытка извлечь значение xmlGetProp(cur->properties, cur->properties->name) выводит в качестве значения символы "=DQjv", которые, как проверено,- от замены кода в строке * (здесь код = 2460) не зависит.
Знаниями не богат, но в них нуждаюсь. Прошу подсказать.
А разве не просто:xmlGetProp(cur, "value");
должно быть?
Спасибо за предположение.
Мне приходится говорить только о предположении, поскольку понимание самих объектов дерева XML приходит со временем.
В данном примере, видимо, объект с именем op_mode не является атрибутом, поэтому попытка извлечь из него значение, как вы предлагаете, даёт негативный результат
xmlGetProp(cur, "value") == NULL, как показала проверка исполнением.
Я попробовал предположить, что объект с именем op_mode - это узел (Node). И тогда в мою помощь поступает одна из функций узла:
xmlNodeGetContent(const xmlNode * ...);Тип возвратного кода: const xmlChar *
О, чудо! - Эта функция и вывела мне моё искомое значение.
Я пересмотрел заголовочный tree.h и не нашёл ничего подобного. Возможно, обнаруженное решение - единственное.
Спасибо за внимание.