2016-09-02 4 views
1

との具体的な要素は、私は2番目keyword1unkown_contentを取得したいと思い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> 

example.html

ファイルのように次のHTMLコードを考えてみなさい。あなたは、これが keyword1で両方のノードを返す見ることができるように私は は

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> 

を試してみました。どのようにして最後の出来事の内容を取得するのですか?

答えて

2

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

[last()]の追加に注意してください。 - //li[text()='keyword1: ']の最後の出現を示します。また、ノードセットに[last()]が適用されているため、//li[text()='keyword1: ']の中括弧も必要です。

+0

私は最初のものを試しましたが動作しませんでした。 2番目のものは、中括弧を使ってトリックを行いました。最後のコマンドは 'xmllint --html --xpath"(// li [text()= 'keyword1:'])[last()]/strong/text() ''です。これは私が必要とするコンテンツを取得します。ありがとう。 – nautical

関連する問題