Pregunta

Tengo una cadena como <html><body><div id="message">Hello World!</div></body></html> y me gustaría obtener el contenido del elemento #message sin analizar el HTML yo mismo.

Pensé que tal vez podría crear un objeto de documento a partir de una cadena en Gecko (esto es para un complemento de Firefox) pero no veo ninguna manera simple.

Noté que hay un createDocument , pero eso no funciona ' t tomar una cuerda. Tendría que quitar la <html> porción del texto, y nuevamente estoy empezando a asumir cosas.

¿Alguien tiene alguna idea? Gracias.

EDITAR: Esto parece funcionar para mí:

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 );
¿Fue útil?

Solución

¿De dónde sacas la cuerda? Si es XML, puede salirse con la suya usando DOMParser.

De lo contrario, debe crear un documento HTML: https://developer.mozilla.org/en / Parsing_HTML_From_Chrome .

El hecho de que solo usar createDocument funcione parece sospechoso, porque la gente usó soluciones más complicadas todo este tiempo.

Otros consejos

No me gusta responder mi propia pregunta, pero esto parece haber funcionado para mí:

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 );

¿Es siempre esa sintaxis? Si es así, ¿por qué no usar una expresión regular?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top