Tengo una cadena HTML como la siguiente,
Código
<div class="col-md-1" style="margin-right:-20px" /> <div style="cursor: pointer; padding: 0px 3px; float: left;" class="Fav aLogin" title="Bookmark" />El html anterior preparado por la transformación XSLT y estoy tratando de agregar el html anterior en el elemento div existente dinámicamente. El problema aquí es cuando se procesa y luego se reconoce el div de cierre. Descubrí que el cierre automático NO es válido para el elemento div y debería ser un cierre adecuado.
Intenté cambiar la salida xml a la siguiente, pero aún aparece la etiqueta de cierre automático.
Código
<xsl:output method="html" indent="yes" /> <xsl:output method="xhtml" indent="yes" />Por lo tanto, necesito una forma de reemplazar las etiquetas que se cierran automáticamente primero en la cadena HTML y luego agregarlas al DOM. Por favor ayuda a sugerir.
NOTA: He encontrado algunas formas de agregar algunos elementos/texto ficticios dentro del div de cierre automático, pero NO es factible en mi caso, ya que tengo tantos XSLT que tienen etiquetas de cierre automático.
Si la lista tiene marcado para un div de cierre automático en cada línea sin texto de visualización previsto, preprocesaría una copia de la lista para reemplazar /> con ></div> ;
Solución 1, preprocesamiento con javascript
Mi ejemplo de fragmento split la lista en una matriz, cada elemento está marcado para un div de cierre automático. Luego, el método array.map se usa para crear una nueva matriz en la que se ha realizado el reemplazo de cadena de cada elemento:
const list = `<div class="col-md-1" style="margin-right:-20px" /> <div style="cursor: pointer; padding: 0px 3px; float: left;" class="Fav aLogin" title="Bookmark" /> <div class="col-md-1" style="margin-right:-20px" /> <div style="cursor: pointer; padding: 0px 3px; float: left;" class="Fav aLogin" title="Bookmark" />`; divArray = list.split('\n'); const newDivs = divArray.map(x => x.replace(" />", "></div>")); document.getElementById('output').innerText = newDivs.join("\n"); #output { white-space:pre; } <div id="output"></div> Solución 2: preprocesar usando sed en la línea de comando
Si guarda un archivo que contiene la lista de marcado de div de cierre automático como (p. ej.) selfClose.txt , puede realizar las sustituciones necesarias en la línea de comando, guardando la nueva lista en (p. ej.) output.txt usando el editor de flujo sed en el línea de comando:
sed 's/ \/\>/\>\<\/div\>/g' selfClose.txt > output.file Tenga en cuenta que los caracteres / , > y < tienen que escaparse en la expresión regular utilizada para el reemplazo.
El formato genérico sería:
sed 's/old-text/new-text/g' oldFile > newFile El indicador s es para sustituto, y el indicador g es para global, reemplazando todas las apariciones.