« xmllint | Main | J2SE5.0でXPath(2) »

2005.07.21

J2SE5.0でXPath

 J2SE5.0で新たに追加されたXPathを使ってみようと思ったところ・・・資料がかなり少ないですね(苦笑)。Apacheの方のXPathを用いたサンプルは結構たくさん見つかるのですが。で、かろうじて見つけたのがGuy Mac's Java HutFAQTs
 上記のサイトを元に作成してみたサンプルです(Import文は省略)。例外処理などは手を抜いています。


public class XPathTest {
private static final String sampleXML =
"<?xml version=\"1.0\" encoding=\"Shift_JIS\" ?>" +
"<学生マスタ>" +
" <学生>" +
" <番号>1234</番号>" +
" <名前>学生 太郎</名前>" +
" <点数 科目=\"数学\">90</点数>" +
" </学生>" +
" <学生>" +
" <番号>1235</番号>" +
" <名前>学生 次郎</名前>" +
" <点数 科目=\"数学\">70</点数>" +
" </学生>" +
" <学生>" +
" <番号>1236</番号>" +
" <名前>学生 花子</名前>" +
" <点数 科目=\"英語\">90</点数>" +
" </学生>" +
"</学生マスタ>";

public static void main(String[] args) {
try {
// InputSourceを用いた方法
// 科目が数学である点数の内容を取得する
String xpathvalue = "/学生マスタ/学生/点数[@科目=\"数学\"]";
XPath xpath = XPathFactory.newInstance().newXPath();

InputSource inputSource = new InputSource(new StringReader(sampleXML));

NodeList nodes = (NodeList) xpath.evaluate(
xpathvalue, inputSource, XPathConstants.NODESET
);

int length = nodes.getLength();

for (int n = 0 ; n < length ; n++) {
Node node = nodes.item(n);
System.out.println(node.getTextContent());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}


これで、学生太郎・学生次郎の二人の点数を取り出すことができました。

|

« xmllint | Main | J2SE5.0でXPath(2) »

Java」カテゴリの記事

Comments

Post a comment



(Not displayed with comment.)


Comments are moderated, and will not appear on this weblog until the author has approved them.



TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/3959/5074843

Listed below are links to weblogs that reference J2SE5.0でXPath:

« xmllint | Main | J2SE5.0でXPath(2) »