Matt

As an aside you may want to consider how you retrieve the config xml file. Currently 
you are using the code

InputStream is = new FileInputStream(Constants.USER_HOME + configFile)

While this is fine, it may not always be portable, or as portable as other methods. 
For instance Chiki has a similar mechanism for loading the config xml file, but it is 
done using URL

conf.setConfigFile(getServletContext().getResource(chikiConfigFile))
...and then....
Document doc = builder.build(getConfigFile());

This removes any hardcoding in your constants file to the path of the file, and is 
more portable across containers. 'chikiConfigFile' is  a Servlet Init parameter, so 
the location can be changed at deploy time without changing code.

As I said, your example does work. I just wanted to point out alternative method that 
may be more suitable. Check the Chiki code for full details.

Cheers

Ghoot


> -----Original Message-----
> From: Matt Raible [mailto:[EMAIL PROTECTED]]
> Sent: 06 March 2002 22:13
> To: Struts Users Mailing List
> Subject: RE: "Best Practice" for parsing an XML file - Code Review
> Requested
> 
> 
> I've completed this task - however, it would've been MUCH 
> easier to just use a
> properties file.  Of course, it could just be my experience 
> with XML parsing -
> because I had to write a lot of code to grab 4 simple varaibles.
> 
>     private synchronized void loadConfig() throws Exception {
> 
>         // Initialize our configuration object
>               config = new Configuration();
>         
>         logCat.debug("Looking for " + configFile + " in " +
> Constants.USER_HOME);
>               
>               // Acquire an input stream to our configuration file
>         InputStream is = new 
> FileInputStream(Constants.USER_HOME + configFile);
>                       
>         // No file found in user.home
>         if (is == null) {
>             logCat.debug("File not found at " + Constants.USER_HOME +
> configFile
>               + " - looking in application's WEB-INF directory");
>             
>                       // Look for config.xml in WEB-INF
>                       is = getServletContext()
>               .getResourceAsStream("/WEB-INF/" + configFile);
>                               
>             if (is == null) {
>                 throw new Exception("Configuration file '" 
>                       + configFile + "' not found in '" 
>                       + Constants.USER_HOME + "', nor in 
> '/WEB-INF/'");
>             }
>         }
>               
>         
>               // Get the XML Document
>         DocumentBuilderFactory builderFactory =
> DocumentBuilderFactory.newInstance();
>               DocumentBuilder builder = 
> builderFactory.newDocumentBuilder();
>               Document doc = builder.parse(is);
>               
>               // close the input stream
>               is.close();
>               
>         // get the repository root
>               NodeList rep = doc.getElementsByTagName("root");
>           Node node = rep.item(0);
>         Text rootDir = (Text) node.getFirstChild();
>         config.setRepositoryRootDir(rootDir.getNodeValue());
> 
>         // get the assets directory
>         rep = doc.getElementsByTagName("assets");
>         node = rep.item(0);
>         Text assetDir = (Text) node.getFirstChild();
>         config.setAssetDir(assetDir.getNodeValue());
> 
>         // get the assetView path
>         rep = doc.getElementsByTagName("viewPath");
>         node = rep.item(0);
>         Text viewPath = (Text) node.getFirstChild();
>         config.setAssetViewPath(viewPath.getNodeValue());
>         
>         // get the assetView path
>         rep = doc.getElementsByTagName("default-passing-score");
>         node = rep.item(0);
>         Text minScore = (Text) node.getFirstChild();
>         config.setAssessmentMinScore(new
> Double(minScore.getNodeValue()).doubleValue());
>         
>         logCat.debug(config.toString());
>         
>     }
> 
> --- Ronald Haring <[EMAIL PROTECTED]> wrote:
> > > Nothing is wrong with the properties file...Xml is just better
> > > 
> > > 1.  one config.xml file in one central place...it's so much 
> > > easier to manage
> > > then a whole bunch of properties
> > 
> > You can put all your properties in one file as well, lets 
> call that file
> > config.properties
> > 
> > > 2.  xml handle the structure data much better then properties file
> > 
> > data structure might be nice for communications between 
> computers but for
> > users?
> > e.g.
> > RepositoryRoot=d:\
> > RepositoryAssets=assets
> > RepositoryViewPath=file://d:/repository/assets
> > 
> > seems just as clear to me as
> > > >         <respository>
> > > >                 <root>d:/repository</root>
> > > >                 <assets>assets</assets>
> > > >                 <viewPath>file://d:/repository/assets</viewPath>
> > > >         </respository>
> > etc.
> > 
> > Cons of xml
> > - Carefull with that ",<,> sign eugene,
> > - Slow parsing
> > 
> > Gr
> > Ronald
> > 
> > 
> > Furore B.V.
> > Rijswijkstraat 175-8
> > Postbus 9204
> > 1006 AE Amsterdam
> > tel. (020) 346 71 71
> > fax. (020) 346 71 77
> > 
> > 
> --------------------------------------------------------------
> --------------
> > ---------------
> > The information transmitted is intended only for the person
> > or entity to which it is addressed and may contain confidential
> > and/or privileged material. Any review, retransmission,
> > dissemination or other use of, or taking of any action in
> > reliance upon, this information by persons or entities other
> > than the intended recipient is prohibited. If you received
> > this in error, please contact the sender and delete the material
> > from any computer
> > 
> --------------------------------------------------------------
> --------------
> > ---------------
> > 
> > 
> 
> 
> __________________________________________________
> Do You Yahoo!?
> Try FREE Yahoo! Mail - the world's greatest free email!
> http://mail.yahoo.com/
> 
> --
> To unsubscribe, e-mail:   
> <mailto:[EMAIL PROTECTED]>
> For additional commands, e-mail: 
> <mailto:[EMAIL PROTECTED]>
> 
> 

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to