解答例 - 実習課題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 + " の従業員は見つかりませんでした。"); } }