>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Разработка http://forum.mozilla-russia.org/viewforum.php?id=18 >Как получить DOM-дерево из HTML-кода документа? http://forum.mozilla-russia.org/viewtopic.php?id=8432 |
Yan > 16-02-2006 17:30:06 |
С помощью XMLHttpRequest получается код HTML-документа. Обрабатывать его "вручную" очень неудобно/долго/неинтересно, поэтому хочется получить DOM-дерево страницы. Но т.к. это HTML, а не xml, то DOMParser использовать не получается. Так вот вопрос: можно ли избежать этого "паразитного" трафика? Может быть есть другие способы парсинга HTML-кода, про которые я не знаю? |
Anton > 16-02-2006 18:31:44 |
Довольно экзотическое решение: http://xpoint.ru/forums/programming/XUL … 4395.xhtml |
Yan > 16-02-2006 19:41:31 |
Попробовал loadURI ("data:text/html,...), но к сожалению, не совсем то. Стили и скрипты там не подгружались только из-за того, что пути к ним были относительно указаны. Если же путь абсолютный, то всё подгрузится. Таким образом преимущества никакого - при innerHTML файлы с относительными путями тоже не грузились. |
Mash > 19-02-2006 16:28:48 |
Решение "в лоб": перед тем, как сделать innerHTML|createContextualFragment -- пройтись регулярками и поменять все import/src/data/href/.. (например, на _import/_src/_data/_href/_..) |
Yan > 19-02-2006 19:41:07 |
Mash |
Mash > 01-03-2006 21:39:10 |
Случайно наткнулся на nsIStreamConverter. Если ещё актуально, то посмотрите в эту сторону, вдруг поможет. |
Yan > 01-03-2006 23:24:32 |
Mash |
Mash > 02-03-2006 01:23:58 |
Насчёт nsIStreamConverter -- поторопился и ступил, категорически. Вообще у меня мысль шла в направлении -- текст -> чистка -> работа с xml (т.е. далее пользуем DOMParser). Пытался было посмотреть как Mozilla преобразовывает полученные данные в html/dom, но сходу не получилось, глаза уже красные. "mozilla_source\parser\htmlparser\" есть, а толку-то... В принципе, стадию чистки можно пройти, прибегнув к сторонним средствам: tidy. С его помощью преобразовываем данные (текст) в корректный xhtml и спокойно используем DOMParser. Есть и исходники, и бинарники (там dll от силы килобайт на 300 выйдёт), и в расширениях уже давно используют... Другое дело, стоит ли заморачиваться с этим? |
Yan > 02-03-2006 02:12:32 |
Mash
В теории это всё интересно конечно, но на практике действительно заморачиваться не стоит. |