C# XPath表达式,用于选择未嵌套在UL标记中的所有标签

C# XPath表达式,用于选择未嵌套在UL标记中的所有标签,c#,html,xpath,C#,Html,Xpath,我有一个关于XPath表达式的简单问题要问,我的HTML如下所示。我只想选择DT的子标签 <div class="product-options" id="product-options-wrapper"> <dl class="last"> <dt> <ul> <label class="required">Available Grip Sizes<em>*</em></label> </ul

我有一个关于XPath表达式的简单问题要问,我的HTML如下所示。我只想选择DT的子标签

<div class="product-options" id="product-options-wrapper">
<dl class="last">
<dt>
<ul>
<label class="required">Available Grip Sizes<em>*</em></label>
</ul>
<div><label>other label</label></div>
</dt> 

<dt>
<label>Would you like this racket restrung?</label>
</dt>

<dt>
<label>String Tension</label>
</dt>
</dl>
</div>

My XPath expression: .//div[@id='product-options-wrapper']//dt/label"

    可用的夹点尺寸*
其他标签 你想把这个球拍重新打一下吗? 弦张力 我的XPath表达式:.//div[@id='product-options-wrapper']//dt/label”
我确实尝试过使用一个[not(@class)]表达式,这在这个特定场景中是可行的,但是我不能在我的项目中使用它,因为我在多个文档上使用相同的xpath

因此,我希望我的查询是..选择所有标签,但不选择UL/嵌套在UL中的子标签

非常感谢你

另外,任何人都可以参考一个好的网站来学习更深入的XPath查询/表达式吗?

如果“除了ul的子对象以外的所有对象”都表示“所有对象都是ul的子对象”,那么XPath看起来像

//div[@id='product-options-wrapper']//dt/ul//label
使用HtmlAgilityPack获取这些标签

HtmlDocument doc = new HtmlDocument();
doc.Load(path_to_html_file);
string xpath = "//div[@id='product-options-wrapper']//dt/ul//label";
var labels = doc.DocumentNode.SelectNodes(xpath);
结果是

<label class="required">Available Grip Sizes<em>*</em></label>
<label>Would you like this racket restrung?</label>
<label>String Tension</label>
结果是

<label class="required">Available Grip Sizes<em>*</em></label>
<label>Would you like this racket restrung?</label>
<label>String Tension</label>
你想把这个球拍重新调一下吗?
弦张力

all About not a child是否意味着all children?嗨,Sergev,很抱歉,我不得不编辑我的原始帖子。我只想选择DT标记的直接子标签,所以在我的场景中,我只想选择两个标签。@user3091209好的,更新的答案。实际上,现在还不清楚您的问题是什么Hi Sergev,再次抱歉糟糕的描述,我实际上想做的是选择所有标签,它们是DT的直接子元素,其中同级元素不包含
    标记。因此在这种情况下,只选择了两个标记。夹点大小*
      球拍重新串线张力@user3091209您对您的意图描述得非常糟糕。我会等一等,以确保你的最后要求不会改变抱歉,谢尔盖夫,我相信我最后的评论是我希望实现的。谢谢你容忍我。