Позволяет ли Java использовать вложенные свойства? - PullRequest
0 голосов
/ 30 декабря 2011

Я имею в виду что-то вроде этого в формате 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 > ....

Из того, что я прочитал в классе Java "Property", это очень линейный подход к созданию свойств в Hashtable. Это getProp (K, V). Может быть, лучший способ сделать это с парсером XML? Таким образом, я мог сделать объект типа "фрукт" и пройти через свойства и загрузить их. Любой совет будет принята с благодарностью. Заранее спасибо.

Ответы [ 3 ]

2 голосов
/ 30 декабря 2011

Нет, это невозможно.Взгляните на свойства 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 и использовать API Java XML для анализа / чтения / созданияэто.

0 голосов
/ 15 февраля 2016

Возможно, вам потребуется обработать сценарий в вашей базе кода. Вам может понадобиться загрузчик XML для загрузки данных.

Как загрузить вложенные пары значений ключей из файла свойств в объект Java с помощью Spring?

0 голосов
/ 30 декабря 2011

Было бы невозможно учесть вложенные свойства. Для вложения свойств необходимо иметь подузлы. Это было бы достижимо, если бы метод getProperty разрешал извлечение Object с, но он допускал только извлечение String с.

Объект свойств Java работает следующим образом:

Свойства -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;
}
...