Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17


Reading an XML file in WEB-INF with Bean

Posted on 2010-11-14
Medium Priority
Last Modified: 2012-05-10
Hi there experts,

i have a short question:
I'm currently writing my own Web Application with Java and this Webapplication has its own configuration xml files. These files are under the WEB-INF folder, so only the Servlet or JSP can access it.
Now i want to write a Java Bean that reads this config-files and provides some getter functions...
The reason, why i want to write a bean is, because this config files should be accessed by many servlets and some JSPs.

How can i access the config files with a java bean?
and what would be the best way to parse the XMLs?

thx for your help and best regards!
Question by:mesX
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
  • 3
LVL 28

Expert Comment

ID: 34132880
Please read
previous discussion  
We can help you with anyway you want to go with this.
JSTL is the easy way to go.  

Author Comment

ID: 34134259
Hi and thx for your comment!
As i understand JSTL is only for JSP pages, isn't it?
... and i can't use it within a Java Bean?

Or is my understanding of a Java Bean wrong?
What i want to do is, that my Servlets and JSPs create an Object from my "ApplicationConfig" class which parses the XML and has some getter functions like "String[] getAllEmployeeNames()". So if i change the XML file one day, i just have to re-write my ApplicationConfig class.

Please correct me if my idea is not a good one, because i'm very new to all this :)

LVL 28

Accepted Solution

rrz earned 2000 total points
ID: 34138005
To get started, try this code.
The file employees.xml contains  
<?xml version="1.0"?>

Open in new window

put that xml file into your web app's classes folder.

Create a JSP containing  
<jsp:useBean id="reader" class="rrz.XMLReader" />

Open in new window

This is just quick and dirty demo code. We should create getter and setter methods for fields in your bean.
Show us an example of your XML and tell us what you want to access, if you want more help.

package rrz;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class XMLReader {
  public String read(){
      StringBuilder sb = new StringBuilder();
      try {
           DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
           DocumentBuilder db = dbf.newDocumentBuilder();
           Document doc = db.parse(getClass().getClassLoader().getResourceAsStream("employees.xml"));
           sb.append("Root element " + doc.getDocumentElement().getNodeName() + "<br/>");
           NodeList nodeLst = doc.getElementsByTagName("employee");
           sb.append("Information of all employees" + "<br/>");
           for (int s = 0; s < nodeLst.getLength(); s++) {
              Node fstNode = nodeLst.item(s);
              if (fstNode.getNodeType() == Node.ELEMENT_NODE) {
                 Element fstElmnt = (Element) fstNode;
                 NodeList fstNmElmntLst = fstElmnt.getElementsByTagName("firstname");
                 Element fstNmElmnt = (Element) fstNmElmntLst.item(0);
                 NodeList fstNm = fstNmElmnt.getChildNodes();
                 sb.append("First Name : "  + ((Node) fstNm.item(0)).getNodeValue() + "<br/>");
                 NodeList lstNmElmntLst = fstElmnt.getElementsByTagName("lastname");
                 Element lstNmElmnt = (Element) lstNmElmntLst.item(0);
                 NodeList lstNm = lstNmElmnt.getChildNodes();
                 sb.append("Last Name : " + ((Node) lstNm.item(0)).getNodeValue() + "<br/>");
      } catch (Exception e) {
      return sb.toString();

Open in new window

Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.


Author Comment

ID: 34138573
You're absolutely awesome!!!! THANK YOU VERY MUCH!

I just have a very small question:
What if i put the employee.xml directly under the WEB-INF folder? Or in my case /WEB-INF/configs/employee.xml? How can i access files inside the WEB-INF folder but outside the classes folder?

best regards
LVL 28

Assisted Solution

rrz earned 2000 total points
ID: 34138969
>How can i access files inside the WEB-INF folder but outside the classes folder?  
There are several ways. One simple way is pass the path from JSP to bean.
<jsp:useBean id="reader" class="rrz.XMLReader" />
  String path = application.getRealPath("/WEB-INF/configs/employees.xml");

Open in new window

and in source code  
File file = new File(path);
           DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
           DocumentBuilder db = dbf.newDocumentBuilder();
           Document doc = db.parse(file);

Open in new window


Better to solution at  previous discussion

Author Closing Comment

ID: 34139232
Thank you so much for all your help! You're a truly expert ;)

I hope you can help me in my future questions too (and i will surely have many  ;) )

best regards

Featured Post

On Demand Webinar - Networking for the Cloud Era

This webinar discusses:
-Common barriers companies experience when moving to the cloud
-How SD-WAN changes the way we look at networks
-Best practices customers should employ moving forward with cloud migration
-What happens behind the scenes of SteelConnect’s one-click button

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

When it comes to write a Context Sensitive Help (an online help that is obtained from a specific point in state of software to provide help with that state) ,  first we need to make the file that contains all topics, which are given exclusive IDs. …
Although a lot of people devote their energy toward marketing for specific industries, there are some basic principles that can be applied to any sector imaginable. We’ll look at four steps to take and examine how those steps were put into action fo…
The viewer will learn how to dynamically set the form action using jQuery.
The is a quite short video tutorial. In this video, I'm going to show you how to create self-host WordPress blog with free hosting service.
Suggested Courses

664 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question