XMLConfiguration load

commonsのXMLConfiguration

configurationsAtはloadメソッドを実行しないと、使用できなかった。
どうもルートエレメントが設定されないようだ。
(コンストラクタにファイル名を指定しても、NGなのかな?)

しかし、loadメソッドは、RefreshDelayが有効なのだろうか?
動的にエレメントを追加した場合に即反映しているようだ。
エレメント削除はRefreshDelayが反映しているよう、、)

 String strData = "<root>"
 +"<node name=\"a\"/>"
 +"<node/>"
 +"</root>";

 FileUtils.writeStringToFile( new File("conf.xml"), strData, "utf-8" );

 XMLConfiguration config = new XMLConfiguration();
 ReloadingStrategy strategy = new FileChangedReloadingStrategy(); 
 strategy.setRefreshDelay(5000);
 config.setReloadingStrategy(strategy);
 config.setExpressEngine(new XPathExpressionEngine());
 config.load("conf.xml");

 List<HierarchicalConfiguration> nodes =  config.configurationsAt("node");
 for(HierarchicalConfiguration node : nodes){
    System.out.print(node.getString("@name"));
 }

 strData = "<root>"
 +"<node name=\"a\"/>"
 +"<node name=\"b\"/>"
 +"<node name=\"c\"/>"
 +"</root>";

 FileUtils.writeStringToFile( new File("conf.xml"), strData, "utf-8" );

 Thread.sleep(1000);

nodes =  config.configurationsAt("node");
 for(HierarchicalConfiguration node : nodes){
    System.out.print(node.getString("@name"));
 }


また、「XMLとして正しくないファイル」を途中で「XMLとして正しいファイル」に書き換えた場合でも
loadメソッドを実行しない限りパースエラーが解消されなかった。
という事は、loadは毎回ファイルを読みに行ってる?

 String strData = "<rNoGood oot>"
 +"<node name=\"a\"/>"
 +"<node name=\"b\"/>"
 +"</root>";

 FileUtils.writeStringToFile( new File("conf.xml"), strData, "utf-8" );

 XMLConfiguration config = new XMLConfiguration();
 ReloadingStrategy strategy = new FileChangedReloadingStrategy(); 
 strategy.setRefreshDelay(5000);
 config.setReloadingStrategy(strategy);
 config.setExpressEngine(new XPathExpressionEngine());
 config.load("conf.xml");

 List<HierarchicalConfiguration> nodes =  config.configurationsAt("node");
 for(HierarchicalConfiguration node : nodes){
    System.out.print(node.getString("@name"));
 }

 strData = "<root>"
 +"<node name=\"a\"/>"
 +"<node name=\"b\"/>"
 +"<node name=\"c\"/>"
 +"</root>";

 FileUtils.writeStringToFile( new File("conf.xml"), strData, "utf-8" );

 Thread.sleep(1000);

nodes =  config.configurationsAt("node");
 for(HierarchicalConfiguration node : nodes){
    System.out.print(node.getString("@name"));
 }


vaio pを買ったので、アンインストールする一覧
http://terurou.hateblo.jp/entry/20100513/1273760611