Préserver les espaces avec HtmlAgilityPack

c# html-agility-pack html-parsing

Question

J'essaie de mettre en évidence un texte dans la chaîne html en utilisant html Agility Pack . Je peux remplacer le texte par <span class="highlight"> , mais lorsque je remplace le texte, l'espace blanc autour de la balise span disparaît. Par exemple, si le texte est "This text will be highlighted" , le résultat "This text will be<span class='highlighted'>highlighted</span>" et l'espace blanc disparaîtra avant la balise span. Cela fusionne les mots avant et après la plage avec le texte correspondant. Je fais simplement une boucle récursive comme celle-ci:

  1. Obtenir le premier noeud enfant
  2. si le noeud est #text , que node.InnerHtml = InnerText.Replace(search_term, span_code)
  3. si le noeud a un noeud enfant, allez à l'étape 1
  4. Aller à la prochaine fratrie puis passez à l'étape 1

Ensuite, je reçois le InnerHtml du HtmlDocument à la suite. J'ai essayé de mettre de l'espace avant <span et après </span> , mais cela les a supprimés. J'ai essayé HtmlDocument.OptionWriteEmptyNodes = true; cela n'a pas fonctionné non plus. J'ai remplacé tous les caractères "\n" et "\t" par un espace avant la création de HtmlDocument et après l'obtention de la chaîne html, sans que cela n'affecte non plus.

Comment puis-je préserver l'espace blanc lorsque j'utilise Html Agility Pack?

Réponse acceptée

En fait, HtmlDocument.OptionWriteEmptyNodes = true; fait ce que je veux. J'ai réalisé maintenant.




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi