简体   繁体   English

为所有孩子加课

[英]add class for all children

I have some html,.. for example: 我有一些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>

How I can to foreach all childs from mainDiv and add some data-attr in every children 我该如何从mainDiv所有孩子,并在每个孩子中添加一些data-attr

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

Alternative just iterate over the children 替代方案只是遍历孩子

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

Or all descendants: 或所有后代:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM