Добавить HTML-теги в узлы HTMLAgilityPack

c# html-agility-pack visual-studio

Вопрос

Мне нужно разобрать сгенерированную CMS страницу HTML и добавить теги элемента списка вокруг любых узлов HTMLAgiligyPack с дочерним узлом, который имеет атрибут имени «Пример».

Код C #

HtmlDocument doc = new HtmlDocument();
doc.Load("test.htm");
foreach (HtmlNode docObjects in doc.DocumentNode.SelectNodes("//object[@type='text/sitemap']"))
{
  HtmlNodeCollection paramNodes = docObjects.ChildNodes;
  foreach (HtmlNode paramNode in paramNodes)
  {
    string paramName = paramNode.GetAttributeValue("name", null);
    string paramValue = paramNode.GetAttributeValue("value", null);
    HtmlNode findItem = paramNode.NextSibling;
    if (paramName == "Example")
    {
     //Add listitem (<li>) tags to the paramName node 
    }
  }
}

test.htm

<OBJECT type="text/sitemap">
    <param name="Example" value="Help.chm::\toc.hhc">
</OBJECT>
<OBJECT type="text/sitemap">
    <param name="Example" value="Help2.chm::\toc.hhc">
</OBJECT>
<OBJECT type="text/sitemap">
    <param name="Example" value="Help3.chm.chm::\toc.hhc">
</OBJECT>

должно быть

<li><OBJECT type="text/sitemap">
    <param name="Example" value="Help.chm::\testing.htm">
</OBJECT></li>
<li><OBJECT type="text/sitemap">
    <param name="Example" value="Help2.chm::\testing.htm">
</OBJECT></li>
<li><OBJECT type="text/sitemap">
    <param name="Example" value="Help3.chm::\testing.htm">
</OBJECT></li>

Любая помощь, которую вы можете предоставить, будет с благодарностью оценена. Это часть более крупного проекта, над которым я работаю, и, скорее всего, будет запрашивать помощь в будущем. Нужна краш-курс обратно на C # - спасибо вам всем заранее.

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

Вот один из способов (код входит в ваше предложение if ):

var objectNode = paramNode.ParentNode;
var li = doc.CreateElement("li");
objectNode.Remove();
li.AppendChild(objectNode);

doc.DocumentNode.AppendChild(li);


Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему