<?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; }