« 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


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

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