我需要从此 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"> Bez záväzkov</option>
<option value="m_9"> Do pohody</option>
<option value="m_39"> 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'
的 idselect
元素子级的所有 option
元素的所有文本节点具有值为 'onoffaci'
的 id
属性的 XML 文档。
您需要迭代结果以获得每个 option
元素的 @value
和 text()
。
或者:
//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/