2011-12-30 7 views
0

:私はJavaの「プロパティ」クラスで読んだものから、Javaはネストされたプロパティを許可しますか?私はxml形式でこのような何かを参照しています

<entry name="apple"> 
    <property name="red" /> 
    <property name="shiny" /> 
    <property name="fresh" /> 
    <property name="ripe" /> 
    <property name="crunchy" /> 
</entry> 
<entry name="plum"> 
    < rinse and repeat > .... 

、それはハッシュテーブルでプロパティを作成するための非常に直線的なアプローチです。これはgetProp(K、V)です。おそらくこれを行う最善の方法はXMLパーサを使うことでしょうか?そうすれば、オブジェクトタイプを「果物」にして、プロパティをトラバースして読み込むことができます。アドバイスをいただければ幸いです。前もって感謝します。

+1

* "Javaは、ネストされたプロパティを可能にしていますか?" *が仕様に準拠しています。、より良い質問です* * "XMLは..許可してい"。 –

答えて

2

これは不可能です。 properties DTDを見てみましょう:

あなたがあなた自身のDTDとXML文書を作成し、それを作成/読み込み/解析する Java XML APIを使用することが
<!-- 
    Copyright 2006 Sun Microsystems, Inc. All rights reserved. 
    --> 
<!-- DTD for properties --> 
<!ELEMENT properties (comment?, entry*) > 
<!ATTLIST properties version CDATA #FIXED "1.0"> 
<!ELEMENT comment (#PCDATA) > 
<!ELEMENT entry (#PCDATA) > 
<!ATTLIST entry key CDATA #REQUIRED> 

0

ネストされたプロパティを許可することはできません。プロパティをネストするには、サブノードが必要です。これは、getPropertyメソッドがObjectの検索を許可されている場合には達成可能ですが、Stringの検索のみが可能です。

JavaのPropertiesオブジェクトは、このように動作します:あなたは文字列によって、ネストされたプロパティを伝えることができない限り、あなたは別の内部のプロパティを1つ配置することはできませんので

を - ストリング を - ストリング を - ストリング

プロパティ を。

はおそらく、あなたはここで私が何を意味するかだHashTable

のようなマップを介して、他のPropertiesを指すようにString Sを使用することができます。

Properties a; 
HashTable<String, Properties> b; 

Object getValue(Properties p, String key){ 
    String s = p.getProperty(key); 
    if(s.beginsWith("prop:")){ 
     return b.get(s); 
    } else 
     return s; 
} 
関連する問題