Добавить элемент в html с помощью htmlagilitypack

c# html html-agility-pack

Вопрос

Как вставить другой тег после определенного тега и удалить тег

Например, у меня есть этот html

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

и это возможный выход

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

это мой код

HtmlDocument doc = new HtmlDocument();
                doc.Load(htmlLocation);
foreach (var item in doc.DocumentNode.Descendants())
{

   if (item.Name == "span")
   {
      HtmlNode div = doc.CreateElement("b");
      //what do i need to do here?
    }
}

я сделал исследование и нашел это

http://www.nudoq.org/#!/Packages/HtmlAgilityPack/HtmlAgilityPack/HtmlNode/M/InsertBefore

но я не могу заставить его работать.

я не могу использовать

if (item.Name == "span")
   {

      item.Name = "newtag";
   }

потому что мне нужно значение класса. решить, какой тег я буду использовать

Принятый ответ

Пожалуйста, проверьте приведенный ниже код, вам нужно установить InnerHtml и сохранить документ Html, вызвав метод сохранения doc.Save(yourfilepath) .

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

Популярные ответы

Можете ли вы попробовать это?

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();
        }
    }


Related

Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow