解答例 - 実習課題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);
}
}
}
}

