2016-11-20 5 views
1

Die Art der HTML-Struktur Ich habe ist wieWie kann ich XPath verwenden, um das vorherige Geschwister des übergeordneten Elements des aktuellen Knotens abzurufen?

. 
. 
<a name="128312"></a> 
<li> 
    <ul class="post"> 
    . 
    . 
    </ul> 
</li> 
<a name="3849"></a> 
<li> 
    <ul class="post"> 
    . 
    . 
. 
. 

und aus dem Kontext eines node einer der ul s zu sein, möchte ich die name der nächsten a bekommen, die name der Eltern Bedeutung (li ‚s`) zurück Geschwister, das Äquivalent von

node.ParentNode.PreviousSibling.GetAttributeValue("name", null) 

außer dass

  • Ich möchte es in XPath-Syntax tun
  • Die obige Abfrage gibt aus irgendeinem Grund einen Knoten zurück, dessen Inhalt Registerkarten und Zeilenumbrüche zwischen a und li sind.
+0

Welche XPath (s) haben Sie bisher versucht? – wing

+0

Ich habe zur Zeit 'parent :: node()/Vorgänger-Geschwister :: a/@ name' funktioniert. Wenn es für Sie funktioniert, kann ich es als eine Antwort verwenden, die Sie akzeptieren können, damit es auch anderen hilft. – wing

Antwort

1

Der Kommentar von Flügel ist teilweise richtig. Verwenden Sie

parent::ul/preceding-sibling::a[1]/@name 

Es wird erhalten Sie die erstea vor dem ul (im Gegensatz zu allen von ihnen). Es wird nicht überprüft, ob es auch das erste Element ist. Wenn das eine Voraussetzung ist, verwenden Sie

parent::ul/preceding-sibling::*[1][self::a]/@name 
Verwandte Themen