Re: Best way to read an XML properties file?
"Bret Schuhmacher" <bret@thelastmilellc.com> writes:
What's the easiest way to read an XML properties file of
relative complexity?
This does not answer your question, but I have developed a
special notation for complex properties and now would like to
take this opportunity to advertise this notation and a GPL
library implementing it.
For simple cases, my DOM implements the Map and List interface:
roomFrom( "< a=b c=d x y z >" ).get( "a" )
gives ?b?, and
roomFrom( "< a=b c=d x y z >" ).get( 0 )
gives ?x?, assuming a preceding
import static de.dclj.ram.notation.unotal.RoomFromModule.roomFrom;
A java.io.File can be used instead of a string
so as to read the configuration from a file.
A slightly more complex example:
public class Main
{ public static void main( final java.lang.String[] args )
{
final de.dclj.ram.notation.unotal.RoomSource room =
de.dclj.ram.notation.unotal.RoomFromModule.roomFrom
(
" " +
" < < &car " +
" Chevy=< doors=4 paint=green > " +
" Ford=< doors=2 paint=purple > " +
" Nissan=< doors=3 paint=red >> " +
" < &bike " +
" < inch=26 &green > " +
" < inch=27 &purple >>> " +
" " );
java.lang.System.out.println
( room.getRoom( 0 ).getRoom( "Ford" ).get( "doors" ));
java.lang.System.out.println
( room.getRoom( 0 ).getType() );
java.lang.System.out.println
( room.getRoom( 1 ).hasType( "bike" ));
for( final java.lang.Object o : room.getRoom( 1 ))
java.lang.System.out.println( o ); }}
2
car
true
< &green inch =26 >
< &purple inch =27 >
The notation is being described in
http://www.purl.org/stefan_ram/pub/unotal_en
The library is here
http://www.purl.org/stefan_ram/pub/ram-jar
Disclaimer: The recent jar contains some debug code and is
experimental. If someone would want to use this, I can provide
a jar without the debug code and some support.