解答例 - 実習課題1 - 3.XML文書を読む2
(実習課題1)
以下のプログラムを作成しなさい。
- employees2.xmlファイルより、従業員の名前を取得し、表示する
- 引数で指定した従業員番号の従業員の名前を表示する
- 従業員番号はemployee要素のno属性の値
- 従業員の名前は、name要素の内容
解答例
/**
* GetEmployee.java
*
* TECHSCORE Java XML DOM XSLT 3章 実習課題1
*
* Copyright (c) 2004 Four-Dimensional Data, Inc.
*/
package com.techscore.dom.chapter3.exercise1;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
public class GetEmployee {
public static void main(String[] args) throws Exception {
if (args.length != 1) {
System.err.println("引数に従業員番号を指定してください。");
return;
}
String id = args[0];
Document document = DocumentBuilderFactory.newInstance()
.newDocumentBuilder()
.parse("employees2.xml");
Element rootElement = document.getDocumentElement();
NodeList employeeNodes = rootElement.getElementsByTagName("employee");
for (int i = 0; i < employeeNodes.getLength(); i++) {
Element employee = (Element) employeeNodes.item(i);
if (!employee.getAttribute("no").equals(id)) {
continue;
}
NodeList nameElements = employee.getElementsByTagName("name");
if (nameElements.getLength() > 0) {
System.out.println("従業員番号 " + id + " : "
+ nameElements.item(0).getFirstChild().getNodeValue());
} else {
System.err.println("従業員番号 " + id + " の従業員の名前は見つかりませんでした。");
}
System.exit(0);
}
System.err.println("従業員番号 " + id + " の従業員は見つかりませんでした。");
}
}

