2016-09-02 2 views
1

Betrachten Sie den folgenden HTML-Code wie in Datei example.htmlein bestimmtes Element Setzen Sie sich mit xmllint

<!DOCTYPE html> 
<head> 
<meta charset="utf-8"> 

<body> 
<div class="container"> 
    <h1> 
    <a href="/"> 
    <img src="/images/image.png"/> 
    </a> 
    </h1> 
    <ul> 
    <li><a href="/" >link1<br /><span>content</span></a></li> 
    <li><a href="/folder" >link2<br /><span>more contend</span></a></li> 
    </ul> 
</div><!-- .container --> 
<div class="container"> 
    <ul class="disc"> 
    <li><strong>no interest 1</strong></li> 
    <li><strong>no interest 2</strong></li> 
    <li><strong>no interest 3</strong></li> 
    <li>keyword1: <strong>unkown_content</strong></li> 
    <li>keyword2: <strong>unkown_content</strong></li> 
    </ul> 
</div><!-- .container --> 
<div class="container"> 
    <ul class="disc"> 
    <li><a href="/folder1">not interested</a></li> 
    <li><a href="/folder2">not interested</a></li> 
    <li><a href="/folder3">not interested</a></li> 
    <li>keyword1: <strong>unkown_content</strong></li> 
    <li>keyword2: <strong>unkown_content</strong></li> 
    </ul> 
</div><!-- .container --> 
</body> 
</html> 

Ich mag würde die unkown_content nach dem zweiten keyword1 erhalten. Ich habe versucht,

xmllint --html --xpath "//li[text()='keyword1: ']" example.html 2>/dev/null 
<li>keyword1: <strong>unkown_content</strong></li><li>keyword1: <strong>unkown_content</strong></li> 

Wie Sie dies zurück beide Knoten mit keyword1 sehen können. Wie bekomme ich den Inhalt des letzten Vorkommens?

Antwort

2

Versuchen Sie xmllint --html --xpath "(//li[text()='keyword1: '])[last()]" example.html 2>/dev/null.

Beachten Sie die Hinzufügung von [last()] - es zeigt auf das letzte Auftreten von //li[text()='keyword1: ']. Die Klammern um //li[text()='keyword1: '] sind ebenfalls erforderlich, da [last()] auf ein Knotenset angewendet wird.

+0

Ich habe das erste versucht und es hat nicht funktioniert. Die zweite, mit den Zahnspangen, hat es geschafft. Mein letzter Befehl ist 'xmllint --html --xpath '(// li [text() =' schlüsselwort1: ']) [last()]/strong/text()" '. Dies bringt den Inhalt, den ich brauche. Vielen Dank. – nautical

Verwandte Themen