2016-09-29 2 views
1

Ich habe die folgende Struktur in einem HTML-Dokument:XPath zu identifizieren Text in html

<li> 
<b>fixed_keyword:</b> varying_text</li> 

Ich mag mit xmllint drucken den varying_text Teil bekommen. Ich habe versucht

xmllint --html --xpath "(//li[/b[text()='fixed_keyword:']]/text())" 
xmllint --html --xpath "(//li)/b[text()='fixed_keyword:']/text()" 
xmllint --html --xpath "(//li[text()='fixed_keyword:'])/text()" 

und viele mehr, aber nichts hat bisher funktioniert.

Was ist der korrekte xpath-Ausdruck zum Drucken varying_text?

Antwort

2

Sie benötigen die following-sibling Achse:

//li/b[. = 'fixed_keyword:']/following-sibling::text() 

Beachten Sie, dass Sie nicht : im Eingangs HTML haben.

+0

Ist es möglich, das führende Leerzeichen in 'variating_text' mit via xpath und xmllint zu entfernen? Ich könnte es durch 'sed' laufen lassen, aber ich würde es vorziehen mit nur einem Befehl wenn möglich. – nautical

+0

@nautisch yeah, du kannst es mit "normalize space" versuchen: 'normalize-space (// li/b [. = 'Fixed_keyword:']/folgendes_geschwister :: text())'. – alecxe