目次へ

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

}

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp