【问题标题】:CSS selector select some part of div class nameCSS 选择器选择 div 类名的一部分
【发布时间】:2014-08-28 21:45:53
【问题描述】:

在 div 类中选择一部分文本:

<div class="enabled_disabled disabled">
<div class="enabled_disabled">
<div class="enabled_disabled">
<div class="enabled_disabled">
<div class="enabled_disabled disabled">

我有那些 div 标签,是否有任何 xpath 语法或 fizzler CSS 选择器语法来选择仅具有 enabled_disabled 的那些 div 标签(中间的 3 个)?不是那些 enabled_disabled disabled

var html = new HtmlDocument();
html.LoadHtml(getitems);

var doc = html.DocumentNode;
var items = (from r in doc.QuerySelectorAll("div.enabled_disabled:not(.disabled)")
    let Name = r.InnerHtml//QuerySelector("div.enabled_disabled div.title_bar div.rate_title span.name").InnerText.CleanInnerText()
    select new {
        CName = Name
    }).ToArray();

【问题讨论】:

  • 你到底想要什么?
  • 我不确定我是否理解正确,但你可以看到这篇文章来获取类名:stackoverflow.com/questions/22004818/…
  • @bluewonder - 看看其他答案也可能对你有帮助

标签: html css xpath css-selectors


【解决方案1】:

Fizzler

要选择仅类enabled_disabled的元素,您可以使用:

[class='enabled_disabled']

使用:not选择器是not available in vanilla Fizzler,但是如果你抓住FizzlerEx就可以使用

XPath

要选择仅类enabled_disabled的元素,您可以使用:

div[@class='enabled_disabled']

在普通的旧 CSS 中

如果 div 的指定类以enabled_disabled开头:

div[class^=enabled_disabled ]

如果 div 的指定类包含 enabled_disabled

div[class*=enabled_disabled ]

如果 div only 有类 enabled_disabled

div[class=enabled_disabled ]

如果 div 有类 enabled_disabled 而没有类 disabled

div.enabled_disabled:not(.disabled)

鉴于您在问题中列出的 HTML,最后两个中的任何一个都适合您。

more on attribute selectors from MDN,和,more on :not()

【讨论】:

  • SO 应该提供要标记为收藏的答案,而不是问题。+1。
  • 感谢您的回复,但是,我使用 doc.QuerySelectorAll (Fizzler) 和 doc.SelectNodes (XPATH) 尝试了最后两个,但出现以下错误: Xpath : ExceptionMessage: "'div. enabled_disabled:not(.disabled)' 的令牌无效。”和 Fizzler : ExceptionMessage: "未知的功能伪 'not'。仅支持 nth-child 和 nth-last-child。"
  • OP 只要求选择中间元素中的 3 个
  • @SW4 是的,我尝试了 div[class='enabled_disabled'] 和 div.enabled_disabled 但它返回了所有 div,其中还包括(禁用)单独站立
  • 回复:code.google.com/p/fizzler/issues/detail?id=33,您是否会考虑使用 FizzlerEx?fizzlerex.codeplex.com
【解决方案2】:

你可以使用这个选择器来匹配这个类并避免另一个。

$(".enabled_disabled:not('.disabled')");

你可以从$()中取出内容

它是valid css selector

 .enabled_disabled:not(.disabled)

【讨论】:

    【解决方案3】:

    在 css 中使用 not() 选择器。:not pseudo-class 表示其参数未表示的元素。

    .enabled_disabled:not(.disabled){
    
    
    }
    

    FIDDLE

    更多关于

    SEE THE LINK

    【讨论】:

    • OP 在 XPath / Fizzler 之后,:not 不支持
    • @SW4 是的,我正在使用 Xpath / Fizzler,这是我收到的错误消息:消息:“发生错误。”,异常消息:“'.enabled_disabled:not(.disabled)'有一个无效的令牌。", ExceptionType: "System.Xml.XPath.XPathException",
    • 我也试过 div[@class='enabled_disabled'] 但它返回所有 div 标签@Sudharsan
    猜你喜欢
    • 2011-09-11
    • 1970-01-01
    • 1970-01-01
    • 2023-02-15
    • 1970-01-01
    • 2010-09-24
    • 2012-02-15
    • 2011-01-24
    • 1970-01-01
    相关资源
    最近更新 更多