34103


このようなソースがあるとして

[code]

       <div id = "aaa">
          <div class="name">山田</div>
        </div>
        　～　省略　　～
        <div id = "bbb">
         <p class="name">佐藤</div>
        </div>
        　～　省略　　～
        <div id = "ccc">
         <div class="name">山田</div>
        </div>
    
[/code]

xpathの指定で属性でclass名がnameに該当するもので  
2番目のものを取得したい場合はどうしたらいいしょうか？

要素の番号指定のやり方は  
div[2]とかあるとおもいますが属性で絞ることもできるのでしょうか？  
//*[@class="name"] ←すべて取得する書き方はわかりましたが・・・


CC BY-SA 3.0
2017-04-18T09:20:11.760
34100
2017-04-18T13:20:52.293
21256
question
google-spreadsheet xpath
属性タグによる何番目を取得するかの方法


`//*[@class="name"]`をカッコで囲んでその後位置指定の`[2]`（２番目のもの）のように指定すればいいです。

以下例（※提示されたＨＴＭＬの`p`は`div`のタイポであると思われたので修正してあります、あと名前を重複しないように最後の山田を鈴木に変更しました。どちらの山田が得られたのか結果から判別できないため）

[code]

    var result = document.evaluate( "(//*[@class='name'])[2]", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null );
    //alert(result.singleNodeValue.textContent);//佐藤が得られる
    console.log(result.singleNodeValue.textContent);
[/code]

[code]

    <div id = "aaa">
        <div class="name">山田</div>
    </div>
    <div id = "bbb">
        <div class="name">佐藤</div>
    </div>
    <div id = "ccc">
        <div class="name">鈴木</div>
    </div>
[/code]


CC BY-SA 3.0
2017-04-18T13:03:46.680
34103
2017-04-18T13:20:52.293
2017-04-18T13:20:52.293
5044
5044
34100
answer