Xpath wählt alle Kindknoten aus

html html-agility-pack xpath

Frage

Ich muss alle Kindknoten (Optionstag) aus diesem HTML auswählen:

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

Ich benutze Html Agility Pack.

Ich versuche das:

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

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

aber ich bekomme Fehler, dass Xpath ungültiges Token hat. Was ist schlecht?

Beispielsweise:

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

Ich brauche Wert (a_0) und Text VÅ¡etci.

Also versuche ich zuerst den Zugang zur Auswahl per Id:

Akzeptierte Antwort

Ich versuche das:

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

aber ich bekomme Fehler, dass Xpath ungültiges Token hat. Was ist schlecht?

Das offensichtliche Problem ist die Verwendung von

option::*

option::* bedeutet: Alle Knoten in der Achse "Option". Allerdings gibt es keine "Option Achse in XPath"

Du willst :

option

Dadurch werden alle option , die option Elemente des aktuellen Knotens sind.

Sie können dies in einen einzelnen XPath-Ausdruck schreiben und den Aufruf getElementbyId() weglassen:

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

For example:

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

I need get value (a_0) and text VÅ¡etci

Verwenden :

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

Damit werden alle value Attribute aller option Elemente , die Kinder aller sind select Elemente in dem XML - Dokument , das eine haben id - Attribut mit dem Wert 'onoffaci' und auch alle Textknoten aller option Elemente , die Kinder aller sind select Elemente im XML - Dokument die ein id Attribut mit dem Wert 'onoffaci' .

Sie müssen die Ergebnisse iterieren, um den @value und text() für jedes option .

Oder:

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

Hier verwenden Sie die Beobachtung, dass das option , an dem Sie interessiert sind, das erste option des übergeordneten Elements ist - jetzt werden nur das Attribut value und die Textknoten des gewünschten option .



Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum