Создание документа из строки в Gecko - PullRequest
2 голосов
/ 24 октября 2009

У меня есть строка, такая как <html><body><div id="message">Hello World!</div></body></html> и я хотел бы получить содержимое элемента #message, не разбирая сам HTML.

Я подумал, что, возможно, мне удастся создать объект документа из строки в Gecko (это для добавления в Firefox), но я не вижу простого способа.

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

У кого-нибудь есть идеи? Спасибо.

РЕДАКТИРОВАТЬ: Мне кажется, это работает:

doc = document.implementation.createDocument( "http://www.w3.org/1999/xhtml", "html", null );
doc.firstChild.innerHTML = '<html><body><div id="message">Hello World!</div></body></html>';
node = doc.getElementById( "message" ); 
alert( node.innerHTML );

Ответы [ 3 ]

3 голосов
/ 24 октября 2009

Не люблю отвечать на мой вопрос, но мне кажется, это сработало:

doc = document.implementation.createDocument( "http://www.w3.org/1999/xhtml", "html", null );
doc.firstChild.innerHTML = '<html><body><div id="message">Hello World!</div></body></html>';
node = doc.getElementById( "message" ); 
alert( node.innerHTML );
2 голосов
/ 25 октября 2009

Откуда вы получаете строку? Если это XML, вы можете использовать DOMParser.

В противном случае вам нужно создать HTML-документ - https://developer.mozilla.org/en/Parsing_HTML_From_Chrome.

Тот факт, что просто использование createDocument работает, кажется подозрительным, потому что все это время люди использовали более сложные решения.

0 голосов
/ 24 октября 2009

Это всегда такой синтаксис? Если так, то почему бы не использовать регулярное выражение?

...