Ajouter un élément au format HTML à l'aide de htmlagilitypack

c# html html-agility-pack

Question

Comment puis-je insérer une autre balise après une balise spécifique et supprimer une balise

par exemple j'ai ce html

<p class="cs40314EBF"><span class="cs1B16EEB5">This is an ordinary text.</span></p>

et c'est la sortie possible

<p class="cs40314EBF"><span class="cs1B16EEB5">This is an ordinary text.</span></p>

c'est mon code

<p class="cs40314EBF"><span class="cs1B16EEB5">This is an ordinary text.</span></p>

j'ai fait une recherche et trouvé ceci

<p class="cs40314EBF"><span class="cs1B16EEB5">This is an ordinary text.</span></p>

mais je ne peux pas le faire fonctionner.

je ne peux pas utiliser

<p class="cs40314EBF"><span class="cs1B16EEB5">This is an ordinary text.</span></p>

parce que j'ai besoin de la valeur de la classe. pour décider quelle balise vais-je utiliser

Réponse acceptée

Veuillez vérifier le code ci-dessous, vous devez définir InnerHtml et enregistrer le document HTML en appelant la méthode save doc.Save(yourfilepath) .

if (item.Name == "span")
{
  HtmlNode div = doc.CreateElement("b");
  div.InnerHtml = "Hello world";
  item.AppendChild(div);
  doc.Save(yourfilepath);
}

Réponse populaire

Pouvez-vous essayer ceci?

var doc1 = new HtmlAgilityPack.HtmlDocument();
    doc1.LoadHtml("<p class=\"cs40314EBF\"><span class=\"cs1B16EEB5\">This is an ordinary text.</span></p>");

    foreach (var item in doc1.DocumentNode.Descendants())
    {
        if (item.Name == "span")
        {
            HtmlNode b = doc.CreateElement("b");
            b.InnerHtml = item.InnerText;
            item.ParentNode.AppendChild(b);
            item.Remove();
        }
    }



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