J'essaie d'analyser la structure ci-dessous en un ensemble d'options de parcours afin que je puisse trouver toutes les manières possibles d'aller de Pontypridd à Llangollen et retour.XPath: Sélectionnez tous les nœuds suivants jusqu'à un nœud
En utilisant XPath, je peux faire //div[@class='JourneyOptions']
pour sélectionner toutes les lignes qui contiennent réellement des informations de trajet. En dehors de XPath, je pouvais parcourir chaque rangée pour décider si elle devait être ajoutée à un ensemble de voyages, ou si c'était la première fois dans un nouvel ensemble de voyages. Dans l'exemple ci-dessous, tous les ensembles de trajets contiennent deux trajets, mais un ensemble peut contenir un seul trajet (un trajet «direct») ou plus de deux (plus d'une «connexion»).
Existe-t-il une expression XPath pour sélectionner tous les trajets du premier ensemble sortant, tous les trajets du deuxième ensemble sortant et ainsi de suite?
Le premier trajet dans chaque ensemble a une entrée radio avec une valeur entière. Je pourrais les générer dynamiquement pour voir chaque ensemble, mais je devrais savoir quand arrêter la génération (ou attendre que le XPath échoue).
<div class='TableHolder'>
<p>...</p>
<h2 id='DirectionHeader'>Outbound Options</h2>
<p>Pontypridd to Llangollen, 30/11/1910</p>
<!-- first part of the first journey from Pontypridd to Llangollen -->
<div class='JourneyOptions'>
<div class='Journey'>
<div class='ColumnOne'>
<input type='radio' checked='checked' name='out' value='1'>
</div>
... some more divs of parseable journey info ...
</div>
<div>
<!-- second part of the first journey from Pontypridd to Llangollen -->
<div class='JourneyOptions'>
<div class='Journey'>
<div class='ConnectingJournies'>
<p>...</p>
</div>
<div class='ColumnOne'>
... doesn't contain a radio input ...
</div>
... some more divs of parseable journey info ...
</div>
</div>
<!-- first part of the second journey from Pontypridd to Llangollen -->
<div class='JourneyOptions'>
<div class='Journey'>
<div class='ColumnOne'>
<input type='radio' name='out' value='2'>
</div>
... some more divs of parseable journey info ...
</div>
<div>
<!-- second part of the second journey from Pontypridd to Llangollen -->
<div class='JourneyOptions'>
<div class='Journey'>
<div class='ConnectingJournies'>
<p>...</p>
</div>
<div class='ColumnOne'>
... doesn't contain a radio input ...
</div>
... some more divs of parseable journey info ...
</div>
</div>
... some more outbound journey options ...
<p>...</p>
<h2 id='DirectionHeader'>Inbound Options</h2>
<p>Llangollen to Pontypridd, 07/11/1910</p>
<!-- first part of the first journey from Llangollen to Pontypridd -->
<div class='JourneyOptions'>
<div class='Journey'>
<div class='ColumnOne'>
<input type='radio' checked='checked' name='in' value='1'>
</div>
... some more divs of parseable journey info ...
</div>
<div>
<!-- second part of the first journey from Llangollen to Pontypridd -->
<div class='JourneyOptions'>
<div class='Journey'>
<div class='ConnectingJournies'>
<p>...</p>
</div>
<div class='ColumnOne'>
... doesn't contain a radio input ...
</div>
... some more divs of parseable journey info ...
</div>
</div>
<!-- first part of the second journey from Llangollen to Pontypridd -->
<div class='JourneyOptions'>
<div class='Journey'>
<div class='ColumnOne'>
<input type='radio' name='in' value='2'>
</div>
... some more divs of parseable journey info ...
</div>
<div>
<!-- second part of the second journey from Llangollen to Pontypridd -->
<div class='JourneyOptions'>
<div class='Journey'>
<div class='ConnectingJournies'>
<p>...</p>
</div>
<div class='ColumnOne'>
... doesn't contain a radio input ...
</div>
... some more divs of parseable journey info ...
</div>
</div>
... some more inbound journey options ...
</div>
Désolé pour le grand exemple, mais je pense que cela est aussi petit que je peux le faire, tout en étant représentatif de mon problème.