Java 用設定ファイル(XML)


ブラウザでダウンロード
ファイルとして入出力


db_connect.xml
<?xml version="1.0" encoding="shift_jis"?>
	<data>
	<value id="Server">night</value>
	<value id="Service">ORCL</value>
	<value id="User">lightbox</value>
	<value id="Pass">password</value>
</data>
Windows で通常アプリケーションの設定情報として最も扱いやすい形は
ini ファイルですが、Java ではかなり面倒です。
結局 XML を使用するのが妥当な選択です。

開発としてデータ交換用フォーマットとして考える場合は、
プログラマが直接 DOM 操作する事は考えにくいので、あまり凝って覚える事もないでしょう
最短距離でデータにアクセスできれば充分です。
package action;

import java.io.*;
import javax.swing.*;
import javax.xml.parsers.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.*;

//*****************************************************
// 入力処理クラス
//*****************************************************
public class Check {

	//*************************************************
	// 読み出し
	//*************************************************
	public void doActionGet( String name, JTextField param[] ) {

		System.out.println( "処理入り口:" + name );

		try {

			// 読み込み用オブジェクトを作成
			DocumentBuilderFactory core = DocumentBuilderFactory.newInstance();
			DocumentBuilder tool = core.newDocumentBuilder();

			// まずファイル
			File target = new File( name );

			if ( !target.exists() ) {
				System.out.println( "ファイルが存在しません" );
				return;
			}

			// ドキュメント
			Document doc = tool.parse(target);

			// standalone 属性を記述しない
			doc.setXmlStandalone( true );

			// ルートのエレメントを取得
			Element root = doc.getDocumentElement();

			// value エレメントの一覧
			NodeList nList = doc.getElementsByTagName("value");

			// データ取得
			for( int i = 0; i < 4; i++ ) {
				param[i].setText( nList.item(i).getTextContent() );
			}

		}
		catch (Exception e) {
			e.printStackTrace();
		}
	}


	//*************************************************
	// 書き込み
	//*************************************************
	public void doActionPut( String name, JTextField param[] ) {

		System.out.println( "処理入り口:" + name );

		try {

			// 読み込み用オブジェクトを作成
			DocumentBuilderFactory core = DocumentBuilderFactory.newInstance();
			DocumentBuilder tool = core.newDocumentBuilder();

			// まずファイル
			File target = new File( name );

			if ( !target.exists() ) {
				System.out.println( "ファイルが存在しません" );
				return;
			}

			// ドキュメント
			Document doc = tool.parse(target);

			// standalone 属性を記述しない
			doc.setXmlStandalone( true );

			// ルートのエレメントを取得
			Element root = doc.getDocumentElement();

			// value エレメントの一覧
			NodeList nList = doc.getElementsByTagName("value");

			// データセット
			for( int i = 0; i < 4; i++ ) {
				nList.item(i).setTextContent( param[i].getText() );
			}

			// 書き込み用オブジェクトを作成
			TransformerFactory tcore = TransformerFactory.newInstance(); 
			Transformer ttool = tcore.newTransformer();

			// Shift_JIS で出力( 設定 )
			ttool.setOutputProperty("encoding","Shift_JIS");

			// 出力
			ttool.transform(new DOMSource(doc), new StreamResult(target)); 

		}
		catch (Exception e) {
			e.printStackTrace();
		}
	}

}
呼び出し部分
	private JButton getJButton() {
		if (jButton == null) {
			jButton = new JButton();
			jButton.setBounds(new Rectangle(230, 23, 70, 31));
			jButton.setText("GET");
			jButton.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					System.out.println("ボタンがクリックされました");

					// ***********************************************
					// XML データ取得呼び出し
					// ***********************************************
					JTextField param[] = {jTextField,jTextField1,jTextField2,jTextField3};   
					appCheck.doActionGet("db_connect.xml",param);

				}
			});
		}
		return jButton;
	}
	private JButton getJButton1() {
		if (jButton1 == null) {
			jButton1 = new JButton();
			jButton1.setBounds(new Rectangle(320, 23, 70, 31));
			jButton1.setText("PUT");
			jButton1.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					System.out.println("ボタンがクリックされました");

					// ***********************************************
					// XML データ書き込み呼び出し
					// ***********************************************
					JTextField param[] = {jTextField,jTextField1,jTextField2,jTextField3};   
					appCheck.doActionPut("db_connect.xml",param);

				}
			});
		}
		return jButton1;
	}