Загрузить строку HTML в дерево DOM с помощью Javascript - PullRequest
6 голосов
/ 05 февраля 2011

В настоящее время я работаю со структурой автоматизации, которая тянет веб-страницу для анализа, которая затем представляется в виде строки для обработки. Движок Rhino Javascript доступен для анализа возвращаемой веб-страницы.

Кажется, что если строка (которая является полной веб-страницей) может быть загружена в представлении DOM, это обеспечит очень хороший интерфейс для анализа и анализа содержимого.

Используя только Javascript, это возможная и / или осуществимая концепция?

Edit:

Я разложу вопрос для уточнения: скажем, у меня есть строка в javascript, которая содержит html, например:


var $mywebpage = '<!DOCTYPE HTML PUB ...//snipped//... </body></html>';

возможно / реалистично загрузить его как-то в объект dom?

Ответы [ 3 ]

1 голос
/ 10 февраля 2011

Я принимаю ответ JonDavidJohn, так как он был полезен при решении моей проблемы, но я подумал включить этот дополнительный ответ для других, которые могут увидеть это в будущем.

Похоже, что в то время как Javascript разрешает загрузку html-строк в элемент DOM, DOM не является частью основного ECMAScript и поэтому недоступен для сценариев, работающих под Rhino.

Стоит отметить, что хорошей альтернативой, реализованной в Rhino 1.6, является E4X.Хотя это и не реализация DOM, она обеспечивает концептуально схожие возможности.

1 голос
/ 14 февраля 2011

Если документ XHTML, вы можете проанализировать его с помощью любого анализатора XML.E4X, вероятно, прекрасно справился бы с этой задачей, как и встроенные интерфейсы синтаксического анализа Java XML.

Библиотека env.js предназначена для эмуляции среды браузера под Rhino, но я считаю, что ваш документ также должен быть совместимымXHTML:

http://ejohn.org/blog/bringing-the-browser-to-the-server/

http://www.envjs.com/

Однако, если это HTML, это сложнее, так как браузеры разработаны так, чтобы быть чрезвычайно снисходительными в разборе разметки.Смотрите здесь список HTML-парсеров на Java:

http://java -source.net / open-source / html-parsers

Это непростая проблемарешать.Люди зашли настолько далеко, что встроили движок Mozilla Gecko в Java через JNI, чтобы использовать его возможности синтаксического анализа.

Я бы порекомендовал вам заглянуть в следующий проект на чистом Java:

http://lobobrowser.org/cobra.jsp

Целью проекта Lobo является разработка веб-браузера на чистом Java.Это довольно интересный проект, и там много чего, но я полагаю, что вы можете довольно легко использовать автономный анализатор в своем собственном приложении, как описано в следующей ссылке:

http://lobobrowser.org/cobra/java-html-parser.jsp

0 голосов
/ 05 февраля 2011

если у вас есть эта переменная, содержащая html, вы можете загрузить ее в объект DOM, например, по id.

var mywebpage = '<!DOCTYPE HTML PUB ...//snipped//... </body></html>';

element = document.getElementById('dom-id');  //<-- element you are loading it into.

element.innerHTML = mywebpage;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...