Xpathすべての子ノードを選択する

html html-agility-pack xpath

質問

この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に無効なトークンがあるというエラーが表示されます。何が悪いですか?

例えば:

<option value="**a_0**">**VÅ¡etci**</option>

私は価値(a_0)とテキストVÅ¡čciを得る必要があります。

だから私は最初にIdによって選択するアクセスを試みる:

受け入れられた回答

私はこれを試して:

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()

これは、値が'onoffaci'であるid属性と、XML文書内のすべてのselect要素の子であるすべてのoption要素のすべてのテキストノードを持つ、XML文書内のすべてのselect要素の子であるすべてのoption要素のすべてのvalue属性を選択しvalue'onoffaci'を持つid属性を持つ。

option要素の@valuetext()を取得するには、結果を反復処理する必要がありoption

または:

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

ここでは、関心のあるoption要素が親の最初のoption子であるという観察を使用しoptionこれで、 value属性と必要なoption要素のテキストノードのみが選択されoption



ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ