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