Tim Tepaße: Mittels XPath src der img-tags ausgeben lassen?

Beitrag lesen

Hallo,

Möchte mir nur den Wert von src aller img eines Dokumentes ausgeben lassen, also nur die URL.
Mit  .addRequestItem("//img[@src]"); gibt er mir das gesamte img-tag mit allem drum und dran aus.

(Was bitte ist ".addRequestItem" – was eigenes?)

Mit "//img[@src]" selektierst Du alle img-Element-Knoten, die einen Attributknoten namens "src" haben. Das Ding in eckigen Klammern ist ein Prädikat, eine Bedingung, die zum Selektieren erfüllt sein muss. Wenn Du Attributknoten haben willst, wäre "//img/@src" richtig.

Übrigens: In (X)HTML können vorher noch die Auflösungsregeln für relative URLs zum Tragen kommen. Zum Beispiel wärst Du beim einem unter "http://example.com/foo/bar.html" aufgerufenen Dokument und dort beim Element <img src="baz.png"> an der konkreten Bild-URL "http://example.com/bar/baz.png" interessiert. XPath arbeitet aber m.W.n. nur auf der Ebene des reinen Textes im Attribut; es verarbeiten relative URLs nicht wirklich zurück zu absoluten URLs. Dazu kommen noch in HTML das <base>-Element im Kopf und in XHTML theoretisch das überall erlaubte xml:base-Attribut. Die wirklich korrekte Auflösung relativer URLs kann man selber mit XPath nicht leisten – Browser dagegen haben das notwendigerweise nicht integriert. An Deiner Stelle würde ich dann wirklich trotzdem nur nach img-Elementen suchen und bei den DOM-Elementen das DOM-src-Attribut abfragen – dort findet eine automatische Auflösung relativer URLs statt. Dies gilt natürlich nur, wenn Du die Möglichkeit hast, auf DOM-Ebene, z.B. in Javascript zu arbeiten.

Tim