XMLで記述したプロパティ(その2)

戻る

::::::::::::::
LoadTest2.java
::::::::::::::
import java.io.*;
import java.util.*;

/**
$Id: prop2.html,v 1.1 2009/06/22 16:12:20 kishi Exp kishi $
*/

public class LoadTest2 {
    public LoadTest2( String filename ) {
        Properties prop = new Properties();

        try {
            InputStream stream = new FileInputStream( filename );
            prop.loadFromXML( stream );
            stream.close();

            // 一覧を出力
            prop.list( System.out );

            System.out.println( prop.getProperty( "最初のURL" ) );
            System.out.println( prop.getProperty( "正規表現などを含むプロパティ" ) );

        } catch ( IOException ex ) {
            ex.printStackTrace();
        }
    }

    public static void main( String[] args ) {
        new LoadTest2( args[ 0 ] );
    }
}

/*
$ javap java.util.Properties
Compiled from "Properties.java"
public class java.util.Properties extends java.util.Hashtable{
    protected java.util.Properties defaults;
    public java.util.Properties();
    public java.util.Properties(java.util.Properties);
    public synchronized java.lang.Object setProperty(java.lang.String, java.lang.String);
    public synchronized void load(java.io.InputStream)       throws java.io.IOException;
    public synchronized void save(java.io.OutputStream, java.lang.String);
    public synchronized void store(java.io.OutputStream, java.lang.String)       throws java.io.IOException;
    public synchronized void loadFromXML(java.io.InputStream)       throws java.io.IOException, java.util.InvalidPropertiesFormatException;
    public synchronized void storeToXML(java.io.OutputStream, java.lang.String)       throws java.io.IOException;
    public synchronized void storeToXML(java.io.OutputStream, java.lang.String, java.lang.String)       throws java.io.IOException;
    public java.lang.String getProperty(java.lang.String);
    public java.lang.String getProperty(java.lang.String, java.lang.String);
    public java.util.Enumeration propertyNames();
    public void list(java.io.PrintStream);
    public void list(java.io.PrintWriter);
    static {};
}
*/

::::::::::::::
SaveTest2.java
::::::::::::::
import java.io.*;
import java.util.*;

/**
$Id: prop2.html,v 1.1 2009/06/22 16:12:20 kishi Exp kishi $
@author KISHI Yasuhiro
*/

public class SaveTest2 {

    private static final String PROP = "my.properties";

    public SaveTest2() {
        Properties prop = new Properties();
        prop.setProperty( "壱", "one" );
        prop.setProperty( "弐", "two" );
        prop.setProperty( "参", "three" );
        prop.setProperty( "四", "four" );
        // ちゃんとエスケープされるか確認する
        prop.setProperty( "最初のURL", "http://www.google.info/test?aaa=bbb&ccc=ddd" );
        prop.setProperty( "正規表現などを含むプロパティ", "<th colspan=2>アピールポイント</th>(.*?)</table>\\s*<!-- --- 募集要項 --- -->" );

        try {
            OutputStream stream = new FileOutputStream( PROP );
            prop.storeToXML( stream, "XMLで記述されたプロパティファイルですねん!", "Shift_JIS" );
            stream.close();
        } catch ( IOException exception ) {
            exception.printStackTrace();
        }
    }

    public static void main( String[] args ) {
        new SaveTest2();
    }
}

■実行結果

$ java SaveTest2


$ cat my.properties
<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>XMLで記述されたプロパティファイルですねん!</comment>
<entry key="壱">one</entry>
<entry key="最初のURL">http://www.google.info/test?aaa=bbb&amp;ccc=ddd</entry>
<entry key="四">four</entry>
<entry key="弐">two</entry>
<entry key="参">three</entry>
<entry key="正規表現などを含むプロパティ">&lt;th colspan=2&gt;アピールポイント&lt;/th&gt;(.*?)&lt;/table&gt;\s*&lt;!-- --- 募集要項 --- --&gt;</entry>
</properties>


$ java LoadTest2 my.properties
-- listing properties --
壱=one
最初のURL=http://www.google.info/test?aaa=bbb&c...
四=four
弐=two
参=three
正規表現などを含むプロパティ=<th colspan=2>アピールポイント</th>(.*?)</tab...
http://www.google.info/test?aaa=bbb&ccc=ddd
<th colspan=2>アピールポイント</th>(.*?)</table>\s*<!-- --- 募集要項 --- -->

戻る inserted by FC2 system