为所有孩子添加课程

时间:2015-03-18 18:57:49

标签: c# html html-agility-pack

我有一些HTML,例如:

<div id='mainDiv'>
   <ul>
      <li>1</li>
      <li>2</li>
      <li>3</li>
   </ul>
   <div><span>text</span></div>
   <div><span>another text</span></div>
   <p>lalala</p>
</div>

我如何预约mainDiv的所有孩子并在每个孩子中添加一些data-attr

HtmlNode mainDiv = document.DocumentNode.SelectSingleNode("//div[@id='mainDiv']");

1 个答案:

答案 0 :(得分:2)

替代方案只是迭代孩子们

class Program
{
    static void Main(string[] args)
    {
        HtmlDocument document = new HtmlDocument();
        document.Load("Demo.html");

        HtmlNode mainDiv = document.DocumentNode.SelectSingleNode("//div[@id='mainDiv']");

        foreach (var child in mainDiv.ChildNodes)
        {
            if (child.Attributes.Any(att=> att.Name == "class"))
            {
                child.Attributes["class"].Value = "data-attr";
            }
            else
            {
                child.Attributes.Add("class", "data-attr");
            }
        }

        document.Save("Demo.html");
    }
}

或所有后代:

class Program
{
    static void Main(string[] args)
    {
        HtmlDocument document = new HtmlDocument();
        document.Load("Demo.html");

        HtmlNode mainDiv = document.DocumentNode.SelectSingleNode("//div[@id='mainDiv']");

        foreach (var child in mainDiv.Descendants())
        {
            if (child.Attributes.Any(att=> att.Name == "class"))
            {
                child.Attributes["class"].Value = "data-attr";
            }
            else
            {
                child.Attributes.Add("class", "data-attr");
            }
        }

        document.Save("Demo.html");
    }
}