LINUX.ORG.RU

Помогите с XML


0

0

Целый день туплю... Надо вот что сделать: Есть XML файл: <?xml version="1.0"?> <zone n=1 radius1=1 radius2=2 material=3>zone 1</zone> <zone n=2 radius1=45 radius2=62 material=23>zone 2</zone> <zone n=3 radius1=51 radius2=52 material=63>zone 3</zone> ну и т. д.... Надо распарсить такой документ, чтобы потом можно было обращаться к элементам примерно так: zone[n].radius1, zone[n].radius[2], ну и т. д. (это примерно, не обязательно так, если средствами libxml2 можно удобней как-то, то с радостью) потом все это менять в памяти и в конце концов записать на диск версию с новыми значениями

Как это сделать с помощью libxml2 и C? Че-то даже не соображу с какого конца программу писать начинать :(

anonymous

Берешь любую программу которая юзает libxml2 и смотришь сырцы. Например tvtime.

anonymous
()

А в чём собственно сложность? Я пользовал libxml2++ соответственно на плюсах (как и многие программисты в мире), и сейчас пользую, перелапачивая горы xml доков, есть модели представления xml - DOm, SAX, мне нравится DOM, и в libxml они реализованы, есть парсеры в той же библиотеке, которые из строки или из файла загонят данные в то же DOM или SAX (назваения функций сишных не знаю, так как пользую плюсовые враперы), потом проходишь по дереву и копируешь эти данные в подготовленные для этой цели массивы (структуру коих определяешь сам). но делаешь это ручками, для примеры: libxml тебе может дать только список атрибутов элемента вида имя - значение, но значение - строка и то что там на самом деле число - это только твоё знание и ты должен сам его (число) вытащить и положить в твои массивы. Потом обрабатываешь как тебе надо и создаёшь свой DOM кладёшь туда свои данные. Есть функции которые тебе из того же DOM сделают XML строку или там файл.

У меня есть заветное желание написать модуль который по переданному ему описаниям xml документа и контейнеров для храниения данных будут переклавать их(данные) из DOM в контайнер и назад (при том что контейнер это не всегда хранилище данных, это может быть например гейт к БД). Напрашивается использование конечного автомата для такой реализации но идей пока не вызрела. А то каждый раз приходится всё дерево проходить и данные с места на место ворочить, однотипно больно, но благо задач с XML ну штук 5, так что не очень пока критично.

btw, указанный тобой xml существовать не может, он не коректен: в xml документе мб только один рутовый элемент

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.