pugixml закрытие тегов
От: st0nx  
Дата: 18.08.11 13:47
Оценка:
Может ли pugixml сама закрывать теги или игнорировать незакрытый тег?


Finally, there are two more flags, that indicate closing tag parsing. When pugixml meets a close tags, there are three ways:

check that the tag name matches the opening tag, return an error if it does not. This is a standard-compliant way, is controlled by parse_check_end_tags flag, which is on in W3C mode
try to find the corresponding tag name (so that <foo> <bar> </foo> will be parsed correctly). This is controlled by parse_match_end_tags, which is on by default
just treat the tag as a closing tag for the node (so that <foo> ... </bar> will be parsed as <foo> ... </foo>). This is the fastest way, and this is what pugxml is doing, but it can corrupt your DOM tree. This way is chosen if both parse_check_end_tags and parsse_match_end_tags are off.

http://pugixml.googlecode.com/svn-history/r2/trunk/docs/index.html

Документация из старого релиз. В новом ничего подобного найти не смог. В исходниках подобного флага нету.
Re: pugixml закрытие тегов
От: Centaur Россия  
Дата: 18.08.11 15:29
Оценка: 1 (1)
Здравствуйте, st0nx, Вы писали:

S>Может ли pugixml сама закрывать теги или игнорировать незакрытый тег?


Ни один xml-процессор не имеет права так делать. Единственная допустимая реакция на ill-formed xml — это прекращение обработки с выдачей сообщения об ошибке.
Re[2]: pugixml закрытие тегов
От: st0nx  
Дата: 18.08.11 17:37
Оценка:
Здравствуйте, Centaur, Вы писали:

C>Здравствуйте, st0nx, Вы писали:


S>>Может ли pugixml сама закрывать теги или игнорировать незакрытый тег?


C>Ни один xml-процессор не имеет права так делать. Единственная допустимая реакция на ill-formed xml — это прекращение обработки с выдачей сообщения об ошибке.


Очень жаль. Я им разбирал html документы, в которых встречаются не закрывающиеся теги типо <link...>. По сути мне нужно построить DOM дерево с данными и по возможности с параметрами тегов. Не закрывающиеся теги можно опускать или принимать просто как за данные узла где они находятся. Может есть какая то готовая библиотека для такой задачи? мне нужна кросс-платформенная, максимально быстрая.
Re[3]: pugixml закрытие тегов
От: hotdox  
Дата: 18.08.11 20:31
Оценка:
Здравствуйте, st0nx, Вы писали:

S>Здравствуйте, Centaur, Вы писали:


C>>Здравствуйте, st0nx, Вы писали:


S>>>Может ли pugixml сама закрывать теги или игнорировать незакрытый тег?


C>>Ни один xml-процессор не имеет права так делать. Единственная допустимая реакция на ill-formed xml — это прекращение обработки с выдачей сообщения об ошибке.


S>Очень жаль. Я им разбирал html документы, в которых встречаются не закрывающиеся теги типо <link...>. По сути мне нужно построить DOM дерево с данными и по возможности с параметрами тегов. Не закрывающиеся теги можно опускать или принимать просто как за данные узла где они находятся. Может есть какая то готовая библиотека для такой задачи? мне нужна кросс-платформенная, максимально быстрая.


Если разбирать html на С/C++ есть в libxml отдельный [http://xmlsoft.org/html/libxml-HTMLparser.html]html парсер[/url]. Он умеет строить DOM, но это C вплохом смысле этого слова, его бы я не рекомендовал. А есть hubbub парсер, дерево он строит, тоже на C, он действительно хорош, его бы я порекомендовал.
Для плюсов есть htmlcxx, правда он не выглядит особо живым.
Re[4]: pugixml закрытие тегов
От: st0nx  
Дата: 19.08.11 12:13
Оценка:
Здравствуйте, hotdox, Вы писали:

H>Здравствуйте, st0nx, Вы писали:


S>>Здравствуйте, Centaur, Вы писали:


C>>>Здравствуйте, st0nx, Вы писали:


S>>>>Может ли pugixml сама закрывать теги или игнорировать незакрытый тег?


C>>>Ни один xml-процессор не имеет права так делать. Единственная допустимая реакция на ill-formed xml — это прекращение обработки с выдачей сообщения об ошибке.


S>>Очень жаль. Я им разбирал html документы, в которых встречаются не закрывающиеся теги типо <link...>. По сути мне нужно построить DOM дерево с данными и по возможности с параметрами тегов. Не закрывающиеся теги можно опускать или принимать просто как за данные узла где они находятся. Может есть какая то готовая библиотека для такой задачи? мне нужна кросс-платформенная, максимально быстрая.


H>Если разбирать html на С/C++ есть в libxml отдельный [http://xmlsoft.org/html/libxml-HTMLparser.html]html парсер[/url]. Он умеет строить DOM, но это C вплохом смысле этого слова, его бы я не рекомендовал. А есть hubbub парсер, дерево он строит, тоже на C, он действительно хорош, его бы я порекомендовал.

H>Для плюсов есть htmlcxx, правда он не выглядит особо живым.

У вас нету какого-нибудь примера по hubbub? Очень мало документации по нему...
Re[5]: pugixml закрытие тегов
От: hotdox  
Дата: 22.08.11 11:42
Оценка:
Здравствуйте, st0nx, Вы писали:

H>>, дерево он строит


S>У вас нету какого-нибудь примера по hubbub? Очень мало документации по нему...


Ну в ссылке и пример.
Как и все C-либы он базируется на callback и контекстах кастуемых к void*. Вы в своем коллбэке приводите void* к тому типу, который туда передали. А самому парсеру ставите свой callback на нужное событие и экземпляр рабочего типа (например дерево, которые вы строите). В C очень удобно читать хедеры там подробные комментарии

Особенно рекомендую к прочтению:
http://source.netsurf-browser.org/trunk/hubbub/include/hubbub/functypes.h?revision=10901&amp;view=markup
http://source.netsurf-browser.org/trunk/hubbub/include/hubbub/parser.h?revision=10901&amp;view=markup
http://source.netsurf-browser.org/trunk/hubbub/include/hubbub/types.h?view=markup
http://source.netsurf-browser.org/trunk/hubbub/include/hubbub/tree.h?view=markup

Если ясности не прибавиться, то как доберусь домой набросаю примерчик
Re: pugixml закрытие тегов
От: lost_guadelenn  
Дата: 22.08.11 12:01
Оценка:
Здравствуйте, st0nx, Вы писали:

S>Может ли pugixml сама закрывать теги или игнорировать незакрытый тег?

Увы, нет.
Re[3]: pugixml закрытие тегов
От: lost_guadelenn  
Дата: 22.08.11 12:03
Оценка:
Здравствуйте, st0nx, Вы писали:

S>Очень жаль. Я им разбирал html документы, в которых встречаются не закрывающиеся теги типо <link...>.

В html вообще может почти все что угодно не закрываться.

S>По сути мне нужно построить DOM дерево с данными и по возможности с параметрами тегов. Не закрывающиеся теги можно опускать или принимать просто как за данные узла где они находятся. Может есть какая то готовая библиотека для такой задачи? мне нужна кросс-платформенная, максимально быстрая.

Можно попробовать сначала прогнать через htmltidy, а потом уже пуги.
Re[6]: pugixml закрытие тегов
От: hotdox  
Дата: 22.08.11 21:31
Оценка:
Здравствуйте, hotdox, Вы писали:

H>Здравствуйте, st0nx, Вы писали:

S>>У вас нету какого-нибудь примера по hubbub? Очень мало документации по нему...
H>Если ясности не прибавиться, то как доберусь домой набросаю примерчик
Вот в качестве примера html pretty printer
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.