Conservar el espacio en blanco con HtmlAgilityPack

c# html-agility-pack html-parsing

Pregunta

Estoy tratando de resaltar un texto en la cadena html usando Html Agility Pack . Puedo reemplazar el texto con <span class="highlight"> , pero cuando reemplazo el texto, el espacio en blanco alrededor de la etiqueta span desaparece. Por ejemplo, si el texto es "This text will be highlighted" , se "This text will be<span class='highlighted'>highlighted</span>" como "This text will be<span class='highlighted'>highlighted</span>" , y el espacio en blanco desaparecerá antes de la etiqueta span. Esto combina las palabras antes y después del intervalo con el texto de intervalo. Simplemente hago un bucle recursivo como ese:

  1. Obtener primer nodo hijo
  2. si el nodo es #text , entonces node.InnerHtml = InnerText.Replace(search_term, span_code)
  3. Si el nodo tiene un nodo hijo, vaya a paso 1
  4. Ir al siguiente hermano y luego ir al paso 1

Entonces obtengo el InnerHtml del documento HtmlDocument como resultado. Intenté poner espacio antes de <span y after </span> , pero los eliminé. Intenté HtmlDocument.OptionWriteEmptyNodes = true; Tampoco funcionó. HtmlDocument todos los caracteres "\n" y "\t" con un espacio antes de crear HtmlDocument y después de obtener la cadena html, y no afectó a ninguno.

¿Cómo puedo conservar el espacio en blanco cuando utilizo Html Agility Pack?

Respuesta aceptada

En realidad, HtmlDocument.OptionWriteEmptyNodes = true; hice lo que quiero Me di cuenta ahora.




Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué