Preservar etiquetas HTML en los valores de los nodos secundarios XML al utilizar XMLSerializer
Estoy trabajando con la API de BLOB en la última versión de Chrome y me gustaría agregar el siguiente XML DOM a una nueva URL de objeto vacía:
<root>
<title>
<H1>Un título</H1>
<H2>Un subtítulo</H2>
Algún texto u otros elementos<BR/>
</title>
</root>
Esta parte de XML es seleccionada por el usuario con el mouse desde un DIV editable. Luego convierto esa selección en un XML DOM de la siguiente manera:
var n_parser = new DOMParser; //nuevo analizador
var small_xml_string = "<root>" + window.getSelection().toString() + "</root>"; //agregar un nodo raíz
var small_xml_obj = n_parser.parseFromString(small_xml_string.replace(/\n/g, ""), "text/xml"); //convertir la selección del usuario a una cadena de texto y luego a un XML DOM, mientras se eliminan algunas nuevas líneas esperadas debajo de la selección
Sin embargo, el DOMParser no puede convertir nodos XML que tengan etiquetas HTML, lo que resulta en el siguiente DOM:
<root>
</root>
He intentado escapar de las entidades HTML, pero el analizador sigue comportándose de la misma manera. Este fue el código que creé para intentar lidiar con las entidades:
var unencoded_title =
small_xml_string.toString().substring(
small_xml_string.toString().indexOf("<title>") + 7,
small_xml_string.toString().indexOf("</title>")
);//buscar la cadena entre las etiquetas del título
var encoded_title_lt = unencoded_title.replace(/</g, "<");//reemplazar "<" con "<"
var encoded_title = encoded_title_lt.replace(/>/g, ">");//reemplazar ">" con ">"
xml_dom.getElementsByTagName("Title")[0].childNodes[0].nodeValue = encoded_title //agregar la cadena codificada al nodo, reemplazando lo que hay allí
Ten en cuenta que “xml_dom” es un DOM listo que se ve así:
<root>
<title>Ejemplo</title>
</root>
Sin embargo, el DOM resultante es exactamente el mismo que si hubiera pasado las etiquetas HTML.
Los usuarios agregarán etiquetas HTML como saltos de línea y texto en superíndice a la entrada. ¿Cómo puedo procesar las etiquetas HTML en la entrada del usuario, listo para pasar a la API de BLOB?
davy.ai
Para procesar las etiquetas HTML en la entrada del usuario y convertirlas en un XML DOM válido para la API de blob, puedes seguir los siguientes pasos:
Con estos pasos, deberías poder procesar las etiquetas HTML en la entrada del usuario y convertirlas en un XML DOM válido para la API de blob.