解答例 - 実習課題2 - 3.XML文書を読む2
(実習課題2)
以下のプログラムを作成しなさい。
- server.xmlファイルを読み込む
- Connector要素の全属性名を出力する
- 属性名の一覧を表示した後に、入力プロンプトを表示し、属性名を入力してもらう。
- 標準入力より入力された属性の値を出力する。
解答例
/** * GetConnectorAttribute.java * * TECHSCORE Java XML DOM XSLT 3章 実習課題2 * * Copyright (c) 2004 Four-Dimensional Data, Inc. */ package com.techscore.dom.chapter3.exercise2; import java.io.BufferedReader; import java.io.InputStreamReader; import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NamedNodeMap; import org.w3c.dom.Node; public class GetConnectorAttribute { public static void main(String[] args) throws Exception { Document document = DocumentBuilderFactory.newInstance() .newDocumentBuilder() .parse("server.xml"); Element server = document.getDocumentElement(); Node connector = server.getElementsByTagName("Connector").item(0); System.out.println("属性名一覧"); NamedNodeMap attributes = connector.getAttributes(); for (int i = 0; i < attributes.getLength(); i++) { System.out.println(attributes.item(i).getNodeName()); } System.out.println("属性名を入力してください。"); BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); String name = null; Node namedItem = null; while ((name = reader.readLine()) != null) { if (name.equals("")) { break; } namedItem = attributes.getNamedItem(name); if (namedItem != null) { System.err.println(name + " = " + namedItem.getNodeValue()); } else { System.err.println("そのような名前の属性は存在しません: " + name); } } } }