我需要从这个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有无效令牌的错误。什么是坏事?
例如:
<option value="**a_0**">**Všetci**</option>
我需要获取值(a_0)和文本Všetci。
所以我首先尝试按ID进行选择:
答案 0 :(得分:3)
我试试这个:
var selectNode = htmlDoc.GetElementbyId("onoffaci"); var nodes = selectNode.SelectNodes("option::*");
但是我收到xpath无效的错误 令牌。什么是坏事?
显而易见的问题是使用
option::*
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()
这将选择所有value
元素的所有option
属性,这些元素属于XML文档中具有select
属性且值为{{1}的所有id
元素的子元素以及所有'onoffaci'
元素的所有文本节点,这些元素是XML文档中具有option
属性且值为select
的所有id
元素的子元素。
您需要迭代结果才能获得每个'onoffaci'
元素的@value
和text()
。
或者:
option
在这里,您可以使用您感兴趣的 //select[@id='onoffaci']/option[1]/@value
|
//select[@id='onoffaci']/option[1]/text()
元素是其父级的第一个option
子元素的观察结果 - 现在这只选择option
属性和文本节点想要value
元素。