xpathの使い勝手
以前xsltを使っていたこともあって、Xpathにはなじみがあったのですが、JavaのDOM操作でもXpathはなかなか使い勝手が良かったです。
特に今はHTMLをパースすることが必要なので重宝しています。
例えば、HTMLからdescriptionの文字列取得を、DOM操作で行うと
NodeList metaList = document.getElementsByTagName("meta");
for(int i=0;i<Element element = (Element)metaList.item(i);
String name =element.getAttribute("name");
if(!OkStringUtil.isNullEmpty(name)&&name.toLowerCase().equals("description")){
description = element.getAttribute("content");
continue;
}}
のようなコードになると思います。
これが、Xpathを使うと、
Node description = XPathAPI.selectSingleNode(doc, "//META[translate(@name, 'DESCRIPTION', 'description')='description']/@content");
と1行。
他にも
NodeList list = XPathAPI.selectNodeList(doc, "//*/text()");
とかでHTML内のテキスト要素をすべて取得できます。
しかもコメント部分が省かれているのでさらに良い。
NodeList list = XPathAPI.selectNodeList(doc, "//A/@href");
でアンカーのリンクだけ取得できます。
すばらしい。
Posted in xpath |
