2011-12-30 89 views
0

我指的是XML格式是這樣的:java是否允許嵌套屬性?

<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 > .... 

從我讀過關於Java的「屬性」級,它是要創造一個Hashtable性能非常線性方法。它是getProp(K,V)。也許最好的方法是使用XML解析器?這樣我可以使對象類型爲「水果」並遍歷屬性並加載它們。任何建議將不勝感激。先謝謝你。

+1

*「的Java是否允許嵌套屬性?」 *由於Java的XML解析器都符合規範,一個更好的問題是*「XML是否允許。」 *。 – 2011-12-30 02:44:38

回答

2

不,這是不可能的。看看在properties DTD

<!-- 
    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> 

但是您可以創建自己的DTD和XML文檔,並使用Java XML API解析/讀/創建它。

0

它不可能允許嵌套屬性。要嵌套屬性,您需要有子節點。如果getProperty方法允許檢索Object s,這將是可實現的,但它只允許檢索String s。

Java的Properties對象是這樣工作的:

屬性 -STRING -STRING -STRING

所以,除非你可以通過字符串交流的嵌套屬性,你不能把裏面一個又一個物業。

也許你可以使用String s到指向另一個Properties通過地圖就像一個HashTable

這裏就是我的意思是:

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