html - Xpath选择所有子节点

标签 html xpath html-agility-pack

我需要从此 html 选择所有子节点(选项标签):

<select name="akt-miest" id="onoffaci">
<option value="a_0">Všetci</option>
<option value="a_1">Iba prihlásení</option>
<option value="a_5" selected="selected">Teraz na Pokeci</option>

<optgroup label="Hlavné miestnosti">

<option value="m_13">&nbsp;&nbsp;&nbsp;Bez záväzkov</option>
<option value="m_9">&nbsp;&nbsp;&nbsp;Do pohody</option>
<option value="m_39">&nbsp;&nbsp;&nbsp;Dámsky klub</option>

</optgroup>

我使用 Html 敏捷包。

我试试这个:

 var selectNode = htmlDoc.GetElementbyId("onoffaci");

 var nodes = selectNode.SelectNodes("option::*");

但我收到 xpath 具有无效 token 的错误。有什么不好?

例如:

<option value="**a_0**">**Všetci**</option>

我需要获取值 (a_0) 和文本 Všetci。

所以我尝试首先访问通过 ID 选择:

最佳答案

I try this:

var selectNode = htmlDoc.GetElementbyId("onoffaci");   
var nodes = selectNode.SelectNodes("option::*"); 

but I get error that xpath has invalid token. What is bad?

明显的问题是使用

选项::*

option::* 表示:“选项”轴中的所有节点。然而,没有“XPath 中的选项轴”

你想要:

option

这将选择作为当前节点子节点的所有 option 元素。

您可以将其写入单个 XPath 表达式并省略 getElementbyId() 调用:

//select[@id='onoffaci']/option

For example:

    <option value="**a_0**">**Všetci**</option>

I need get value (a_0) and text Všetci

使用:

    //select[@id='onoffaci']/option/@value 
|
    //select[@id='onoffaci']/option/text()

这将选择所有 option 元素的所有 value 属性,这些元素是具有 的 XML 文档中所有 select 元素的子元素值为 'onoffaci' 的 id 属性,以及作为所有 select 元素子级的所有 option 元素的所有文本节点具有值为 'onoffaci'id 属性的 XML 文档。

您需要迭代结果以获得每个 option 元素的 @valuetext()

或者:

    //select[@id='onoffaci']/option[1]/@value 
|
    //select[@id='onoffaci']/option[1]/text()

在这里,您观察到您感兴趣的 option 元素是其父元素的第一个 option 子元素 - 现在仅选择 value code> 属性和所需 option 元素的文本节点。

关于html - Xpath选择所有子节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4759308/

相关文章:

c# - YouTube HTML Agility Pack C#

c# - Html 敏捷包实现

javascript - 如何在 IOS 上将 HTML5 视频下载/保存到设备

html - CSS : last child no border

html 正文小于其内容

xml - 是否需要在根元素中声明 XML namespace 才能被 XPath 查询匹配?

javascript - Electron :-webkit-app-region:拖动有效,但不允许我单击自定义标题栏中的按钮

selenium - 使用 Xpath 获取前一个同级

javascript - Xpath:如果存在多个子项,则选择多个父项

c# - 适用于 Windows Phone 8.1 的 HTML 敏捷包