コメント部を利用したXPathの指定方法について教えてください。


<div class="date">
<!--// date1 //-->2011年11月15日00時17分<!--// date2 //-->
</div>
というHTMLの一部があった場合、この日付を取得するにはどのように指定すればいいのでしょうか?
<div>のclassはページによって異なってしまっている場合もあるので、このコメント部がキーとなるので、date1等を使って指定したいのですが。
[contains()]等を使って試してみたのですがダメでした。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2011/11/23 17:50:03

回答2件)

id:TransFreeBSD No.1

回答回数668ベストアンサー獲得回数268

こんな感じ?
http://jsfiddle.net/e8UF7/
comment()は*にはマッチしないのと、複数マッチしたときが良くわからない。

//div[contains(child::comment(),'date3')]

これで行けそうに思うけどダメだった。なんでだろう。

id:Cherenkov No.2

回答回数1504ベストアンサー獲得回数493

TransFreeBSDさんの回答を参考にしながら、
http://jsfiddle.net/cherenkov/eamJJ/

<html>
<head>
<meta charset="UTF-8">
<script>
onload = function() {
var date1 = document.evaluate('//text()[preceding-sibling::comment()[contains(., "date1")]]', document, null, XPathResult.STRING_TYPE, null).stringValue;
alert(date1)
var date3 = document.evaluate('//text()[preceding-sibling::comment()[contains(., "date3")]]', document, null, XPathResult.STRING_TYPE, null).stringValue;
alert(date3)
};
</script>
</head>
<body>
<div class="date">
<!--// date1 //--> 1-2 <!--// date2 //-->
<!--// date3 //--> 3-4 <!--// date4 //-->
</div>
</body>
</html>


参考:
あるテキストを含むコメントノードを取得するXPath - FFFF - 0x

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません