LINUX.ORG.RU
 
hibou

GMarkup XML parser


0

1

Ребят, киньте ссылкой на пример использования GLib GMarkup Simple XML parser. Что-то в гугле не могу ничего вменяемого откопать. Или может у кого есть свой опыт использования? Не подключать же libXML2 ради пары элементов.


[#] Ответ на: комментарий от hibou 20.10.2011 19:41:27  

А что оно использует, SAX/DOM? Я успел все написать на втором (Qt), и словил тормоза. Так понимаю, DOM медленно работает. Но удобный, зараза.

()
[#] Ответ на: комментарий от anarelian 21.10.2011 4:24:44  
hibou

Здесь SAX, я удивился насколько быстро записи перебираются. Там простой перебор в поиске. Думаю попробовать переделать на выборку по XPath. Но не знаю какое ускорение от этого получу и получу ли вообще. Да и по памяти - расход, SAX значительно меньше памяти требует.

***** ()
[#] Ответ на: комментарий от hibou 21.10.2011 4:31:56  
>>-----Цитата---->>

SAX

<<-----Цитата----<<

Если куча одинаковых тегов, то как узнать, где находимся? я сделал переменную nestLevel, которая текущий уровень вложенности хранит. Имхо костыль, хоть и быстро работает.

>>-----Цитата---->>

XPath

<<-----Цитата----<<

оО Сам боюсь даже начинать эту штуку осваивать. Я так понимаю, она только для сложных и очень больших файлов же, а Вам что-то простое считать нужно?

()
[#] Ответ на: комментарий от anarelian 21.10.2011 4:39:42  
hibou

Ну там-то я конфиг парсил, это ерундово, да. Но теперь я дальше пошел - парсю словарь xdxf, а это файлище порядка 25 метров. Вот и не знаю как будет с XPath, сколько оно памяти сожрет. С SAX эти 25 метров перебираются до конца примерно за пару секунд.

***** ()
[#] Ответ на: комментарий от anarelian 21.10.2011 4:39:42  
hibou

На твой вопрос я пока не знаю как ответить. Посмотри вот здесь: http://xmlsoft.org/html/libxml-tree.html#xmlNode

Там есть поле extra, написано, что оно для XPath. Логично предположить, что есть функции для работы с этим полем. Например, такая: http://xmlsoft.org/html/libxml-xpath.html#xmlXPathCmpNodes

***** ()