码迷,mamicode.com
首页 > Web开发 > 详细

CsQuery获取IDomObject元素的完整CSS选择器

时间:2018-05-15 14:02:58      阅读:347      评论:0      收藏:0      [点我收藏+]

标签:bottom   link   说明   inf   style   dom   优先   amp   split   

一、方法说明

通过IDomObject元素,获取完整的CSS选择器,过滤HTML和BODY元素,自动将class、id添加到选择器上,优先添加class,无class再添加id。如:

<html>
 <head></head> 
 <body> 
  <div id="result"> 
   <h3 class="t"><a "="" href="http://www.baidu.com/link?url=PgEyrxusTKZjg64DFOd_qlTy4o7dXLH_26WOy1mg6JUwVE4L_KrH24eG7s49yN8R-iBqQEb80m2gLmAzab8FIK&amp;ck=4276.4.1526360648567.0.0.250.568.0&amp;shh=www.baidu.com&amp;sht=baidu" target="_blank">CSS教程</a></h3> 
  </div>  
 </body>
</html>

a元素的完整的CSS选择器为:DIV#result H3.t A

二、方法实现

public string GetFullCssSelector(IDomObject dom)
{
    string str = "";
    while (dom != null && dom.NodeName != null)
    {
        string nodeName = dom.NodeName;
        if (!(new[] {"HTML", "BODY"}.Contains(nodeName))) //过滤HTML、BODY
        {
            if (dom.HasAttribute("class"))
            {
                string s = dom.Attributes["class"];
                s = s.Replace("  ", " ").Replace("  ", " ").Replace("  ", " ");
                string[] strings = s.Split( );
                foreach (string str2 in strings)
                {
                    nodeName += "." + str2;
                }
            }
            else if (dom.HasAttribute("id"))
            {
                nodeName += "#" + dom.Attributes["id"];
            }
            str = nodeName + " " + str;
        }
        dom = dom.ParentNode;
    }
    return str.Trim();
}

--版权信息--

转载请标明文章出处,谢谢!

文章作者:易几 http://www.cnblogs.com/InfoStudio/

--版权信息--

CsQuery获取IDomObject元素的完整CSS选择器

标签:bottom   link   说明   inf   style   dom   优先   amp   split   

原文地址:https://www.cnblogs.com/InfoStudio/p/9040474.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!