Ich habe HTML-Inhalt, den ich als XML-Dokument speichern (mit HTML Agility Pack). Ich kenne einige XPath, aber ich bin nicht in der Lage, den genauen Inhalt auf Null zu setzen.
In meinem Beispiel unten versuche ich, den Text "src" und "alt" aus dem großen Bild zu extrahieren. Das ist mein Beispiel:
<html>
<body>
....
<div id="large_image_display">
<img class="photo" src="images/KC0763_l.jpg" alt="Circles t-shirt - Navy" />
</div>
....
<div id="small_image_display">
<img class="photo" src="images/KC0763_s.jpg" alt="Circles t-shirt - Navy" />
</div>
</body>
</html>
Was ist der XPath, um "images / KC0763_l.jpg" und "Circles t-shirt - Navy" zu erhalten? Das ist wie weit ich gekommen bin, aber es ist falsch. Meistens Pseudo-Code an dieser Stelle:
\\div[@class='large_image_display']\img[1][@class='photo']@src
\\div[@class='large_image_display']\img[1][@class='photo']@alt
Jede Hilfe, um dies zu erreichen, wäre sehr willkommen.
Der folgende xpath bringt Sie zu den src-Attributen für die img-Tags:
'//html/body/div/img[@class="photo"]/@src'
Und ähnlich werden Sie dadurch zu den alt-Attributen kommen:
'//html/body/div/img[@class="photo"]/@alt'
Von dort gelangen Sie zum Attributtext. Wenn Sie nur diejenigen finden möchten, die 'large_image_display' entsprechen, dann würden Sie es weiter so filtern:
'//html/body/div[@id="large_image_display"]/img[@class="photo"]/@src'
Verwenden Sie die folgenden XPath-Ausdrücke :
/html/body/div[@id='large_image_display']/img/@src
und
/html/body/div[@id='large_image_display']/img/@alt
Versuchen Sie immer, die Abkürzung //
zu vermeiden , da dies zu einer sehr ineffizienten Auswertung führen kann (bewirkt, dass der gesamte (Teil-) Baum gescannt wird).
In diesem speziellen Fall wissen wir, dass das html
Element das oberste Element des Dokuments ist, und wir können es einfach mit /html
- nicht //html
auswählen.
Ihr Hauptproblem bestand darin, dass Sie in Ihren Ausdrücken \
und \\
und in XPath keine solchen Operatoren vorhanden sind. Die richtigen XPath Operatoren , die Sie versuchen , zu verwenden sind /
und die //
Abkürzung.