2016-12-19 5 views
0

Ich habe HTML-Code wie folgt aus:XPath zum Parsen "href" von/einem Tag?

<a href="/images/big_1.jpg" class="class-a"> 
    <img class="class-img" src="/images/small_1.jpg"/> 
     <span class="class-span"> 
     <img src="/images/img_1.png"> 
     </span> 
</a> 

<a href="/images/big_2.jpg" class="class-a"> 
    <img class="class-img" src="/images/small_2.jpg"/> 
     <span class="class-span"> 
     <img src="/images/img_2.png"> 
     </span> 
</a> 

ich von der ersten/einem Tag mit diesem die alle URLs erfolgreich packte:

//a[@class="class-a"]/@href 

zum Beispiel die diese URL zurückgeben würde:

/images/big_1.jpg,/images/small_1.jpg,/images/img_1.png 

Aber ich brauche nur diese URL:

/images/big_1.jpg,/images/big_2.jpg 

Hilfe, bitte!

Antwort

0

//a[@class="class-a"]/@href würde nur die href Attributwerte der a Elemente mit "Klasse-A" class Attribut zurückgeben. In Ihrem Fall sind dies:

/images/big_1.jpg,/images/big_2.jpg 

Mit anderen Worten, Ihr aktueller Ansatz ist der richtige.


Wenn Sie meinen, die src und href Attribut der a Elemente sowie alle Kinder Elemente zu erhalten. Wenn dies der Fall ist, können Sie descendant-or-self und @* mit name() verwenden, um die Attributnamen zu überprüfen:

//a[@class = 'class-a']/descendant-or-self::*/@*[name() = 'src' or name() = 'href'] 
+0

Nein, ich nur href brauchen. – Reforket

+0

@Rezept gut, dann sollte dein Ausdruck funktionieren. Sehen Sie das Problem nicht, können Sie bitte erläutern, wie sich Ihre Eingabe von der gewünschten unterscheidet? Vielen Dank. – alecxe

+0

Vielleicht etwas mit meinem Parser. Weil der Code, den du geschrieben hast, nicht funktioniert. // a [@ class = "class-a"]/@ href Ich verstehe, dass es nicht richtig funktioniert, obwohl es geben sollte, was ich brauche. – Reforket