XML DOM to Java object

This is probably the wrong forum. I am trying to get up to speed with this fast. I looked at the JAXP tutorial but it does not help with this. (It does provide a quick tutorial on the Swing JTree, however ;-) ... )
Anyway I can find any number of examples on displaying the entire DOM as a heirarchy, which I do not care about. I want to pull out parts of a DOM tree and create objects using the data (TEXT node values). I know this is a common task and I feel dumb but I am hoping to start somewhere better than the JAXP stuff ... maybe I'm wrong ...
Can anyone please tell me where to get started learning ?
Appreciate it !!!

I am not sure if I am following what you are asking, but maybe this is worth a shot. If you want to just get specific values from an xml file (ie, elements or attributes) here is an example using the dom.
Hope it helps
DocumentBuilderFactory docBuildFactory = DocumentBuilderFactory.newInstance();
                        DocumentBuilder docBuilder = docBuildFactory.newDocumentBuilder();
                        Document doc = docBuilder.parse(new File(filename + "\\" + xml));                       
                        //get the root of the document which is the template name
                        doc.getDocumentElement().normalize();
                        String rootName =  doc.getDocumentElement().getNodeName();                       
                        //get elements of data needed
                        NodeList node1 = doc.getElementsByTagName("Memid");
                        Element element1 = (Element)node1.item(0);
                        memberid = element1.getFirstChild().getNodeValue();Sorry if this is not what you are looking for.....

Similar Messages

  • Differnce between java script xml dom and Java Xml dom

    Hi,
    In my application For client side in Java Script for craetion of DOM MIcrosoft Activex object is used. USing that one they are buiidng DOM. And they are saving as XML. In server side i have to write one servlet which will parse that xml and i have to store in dynamic arrays.Which API is better for parsing XML in java.In util pacakge which class is better for storing dynamical values that means MAP,Hash Map,Hash table ??

    in java, the java..xml.parsers package is generally used for parsing xml into a DOM. there are also sax and stax parsers available.
    which class in java.util is better for storing stuff depends on what you need to do with the stuff. find a nice tutorial on java collections and then decide which one makes sense for what you need.

  • Generation of XML file from Java objects using castor

    I have the following java file(Customer.java).
    public class Customer
         private String ID;
         private FirstName firstName;
         private MiddleName middleName;
         private LastName lastName;
         private ArrayList address;
         public ArrayList getAddress() {
              return address;
         public void setAddress(ArrayList address) {
              this.address = address;
         public FirstName getFirstName() {
              return firstName;
         public void setFirstName(FirstName firstName) {
              this.firstName = firstName;
         public String getID() {
              return ID;
         public void setID(String id) {
              ID = id;
         public LastName getLastName() {
              return lastName;
         public void setLastName(LastName lastName) {
              this.lastName = lastName;
         public MiddleName getMiddleName() {
              return middleName;
         public void setMiddleName(MiddleName middleName) {
              this.middleName = middleName;
    Using castor i have created an xml file(customer.xml) which has the following format.
    <?xml version="1.0" encoding="UTF-8" ?>
    - <customer ID="fbs0001">
    <FIRSTNAME>Fred</FIRSTNAME>
    <MIDDLENAME>B</MIDDLENAME>
    <LASTNAME>Scerbo</LASTNAME>
    - <ADDRESS>
    <FIRSTLINE>No 18, Sheshadri road</FIRSTLINE>
    <SECONDLINE>Gandhinagar Bangalore</SECONDLINE>
    </ADDRESS>
    - <ADDRESS>
    <FIRSTLINE>ITPL</FIRSTLINE>
    <SECONDLINE>Whitefield Bangalore</SECONDLINE>
    </ADDRESS>
    </customer>
    I have used a mapping file to get this output.Is there a way where i can get the output xml in the following format without changing the Java object structure.If yes then please suggest how this can be done.
    <?xml version="1.0" encoding="UTF-8" ?>
    - <customer ID="fbs0001">
    <FIRSTNAME>Fred</FIRSTNAME>
    <MIDDLENAME>B</MIDDLENAME>
    <LASTNAME>Scerbo</LASTNAME>
    </customer>
    <ADDRESS>
    <FIRSTLINE>No 18, Sheshadri road</FIRSTLINE>
    <SECONDLINE>Gandhinagar Bangalore</SECONDLINE>
    </ADDRESS>
    - <ADDRESS>
    <FIRSTLINE>ITPL</FIRSTLINE>
    <SECONDLINE>Whitefield Bangalore</SECONDLINE>
    </ADDRESS>
    I mean the output xml file should have the address as a separate tag not withing the root tag customer.

    Hello,
    Castor's own discussion groups might be able to point you to the solution you're looking for (if this use case is possible using Castor).
    Oracle has its own object-to-XML mapping tool that is part of the TopLink product. It allows you to map existing objects to an existing XML Schema. This can be done visually using the TopLink Workbench, or programmatically using the TopLink APIs. TopLink OXM also supports the JAXB specification.
    Using TopLink OXM to get the desired XML result I would recommend the following. Map the Customer and Address classes to XML, but don't map the relationship between Customer and Address. Then make the calls to the marshaller something like the following:
    marshaller.marshal(aCustomer, System.out);
    for(int x=0; x<aCustomer.getAddress().size(); x++) {
         marshal(aCustomer.getAddress().get(x), System.out);
    Example - Using TopLink OXM to map an existing object model to an existing XML Schema:
    http://www.oracle.com/technology/products/ias/toplink/preview/10.1.3dp4/howto/ox/index.htm
    For more information on TopLink object-to-XML mapping:
    http://www.oracle.com/technology/products/ias/toplink/preview/10.1.3dp4/objectxml/index.html
    -Blaise

  • Reg XML generation from java objects using SAX 2.0

    i'm using java 1.6 and i've imported following class to generate XML from java objects
    import com.sun.org.apache.xml.internal.serialize.OutputFormat;
    import com.sun.org.apache.xml.internal.serialize.XMLSerializer;
    the following class has been imple her to create a Xml file and tag elements ,
    OutputFormat of = new OutputFormat("XML", "iso-8859-1", true);
    XMLSerializer serializer = new XMLSerializer(fos, of);
    ContentHandler hd = serializer.asContentHandler();
    hd.startDocument();
    everything works fine but i'm getting warrnin reg the serializer and outputformat
    warring is:
    com.sun.org.apache.xml.internal.serialize.OutputFormat is Sun proprietary API and may be removed in a future release
    com.sun.org.apache.xml.internal.serialize.OutputFormat is Sun proprietary API and may be removed in a future release
    HOW CAN I AVOID DS WARRING PLZ HELP REG DS
    thanks ,
    with regards,
    Rajesh.S

    I've been having the same problem. Here is what i found:
    [http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6476630]
    Hope that helps (or at least helps you feel better).

  • How to generate Java objects from XML files with out  scema compilation

    Dear participants,
    My name is Raghavendra , i have a requirement of reading XML files Dynamically and parse them and create java types for manipulation . i will not be provided with sxd files (no schema compilation )coz no one knows how many types of structures are there. i want a generic solution. Please Help.
    Thanks ,
    Raghavendra Ach
    you can mail me to " [email protected]"

    georgemc wrote:
    You could also look at something like Apache Digester, which will parse your XML and populate Java objects with the data. A slightly steeper learning curve than the lower-level APIs such as JDOM, but that's outweighed by the lesser development effortdon't think that would work for the original problem, which seemed to indicate that the xml had an unknown structure.

  • XML to java object AND Performance

    Hi,
    I read some article about marshalling a XML file to Java Object (like Castor, XML Beans projects...)
    To resume: I would like to marshal a XML doc (from XML to Java object. Later I would like to put these objects on a SGBD...). Unfortenaly I suppose that approach is to expensive on term of performance? Supposing that my xml doc contain 100 data's occurances, XML bean woulkd create 100 objects corresponding. My problem is that I don't want that the all 100 objects live in the same time on memory. For example, my code will read sequential, the xml occurances (like a Sax parser), create 10 datas objects (standby), put these in the data base, and destroy these objects before...iteratively create the next 10 objects...
    It is possible ? Can anybody help me?
    Thank

    On the article: Java Architecture for XML Binding (JAXB)
    (http://java.sun.com/developer/technicalArticles/WebServices/jaxb/)
    I found maybe a response?
    "...in other words, you can do a SAX parse of a document and then pass the events to JAXB for unmarshalling. "
    But somebody could help me to write the code to do that?

  • Printing XML DOM to string

    When I create an xml document and print it to a string I find that I can only get 900 characters at a time from the output string (using substring) even though its length is reported as > 900
    Running on Oracle 8.1.7

    Sun's resources on XML (including JAXP):
    http://java.sun.com/xml/
    Parser with DOM and SAX support:
    http://xml.apache.org/xerces-j/
    http://www.alphaworks.ibm.com/tech/xml4j
    Of other interest:
    http://xml.apache.org/xalan/
    http://java.apache.org/ecs/index.html
    http://xml.apache.org/cocoon/index.html
    Cameron Purdy
    http://www.tangosol.com
    "Kevin Woo" <[email protected]> wrote in message
    news:[email protected]..
    Hi,
    Would anyone know where I could get a XML DOM to Java String parser,
    which does forward and backward parsing?
    Thanks a bunch,
    Kevin Woo

  • Payload XML DOM Object Update using Java Embedding

    Hi,
    I have a Java Embedding activity which updates the payload after making
    a call to a local EJB. The EJB sends back updated information. In my Java
    Embedding activity i try to update the payload nodes with the new information.
    It get's really cumbersome to do this sort of thing in BPEL. Basically i am trying
    to remove an existing node in the payload and replace it with a new node.
    I did so may things that i really don't remember what are they. Finally i managed to
    update the payload with the following code.
    org.w3c.dom.Element payload = (org.w3c.dom.Element)getVariableData("inputVariable","payload","/MSG");
    org.w3c.dom.Element oldNode = (org.w3c.dom.Element)getVariableData("inputVariable","payload","/MSG/TSLData");
    org.collaxa.thirdparty.dom4j.Element tslElem = com.collaxa.cube.xml.dom.DOMFactory.convertToCollaxaElement(oldNode);
    oldNode = (org.w3c.dom.Element)getVariableData("inputVariable","payload","/MSG/REC");
    payload.removeChild(oldNode);
    msgElem = com.collaxa.cube.xml.dom.DOMFactory.convertToCollaxaElement(payload);
    msgElem.add(recElem);
    I feel that there no proper interface to update the data in the payload values with
    nodes, string etc. It would be nice if we don't have to work with
    com.collaxa.cube.xml.dom.DOMFactory
    org.collaxa.thirdparty.dom4j.Element
    the collaxa classes.
    We need to have more than setVariableData, bascally good payload manipulation API's.
    Let me know if there are any alternatives to do this.
    Thanks,
    Senthil L

    I have been having the same difficulties. Were you able to find any documentation or javadocs for the Collaxa libraries? If so, I would greatly appreciate locating them.

  • Generating an XML representation of arbitrary Java objects

    Hi. Just for fun, I'm attempting to write some code which creates an XML representation of an arbitrary java object using reflection. The idea is that only properties with get/set methods should come through in the XML.
    Here is the code:
    package com.uhg.aarp.compas.persistence.common.xml;
    import java.io.IOException;
    import java.lang.reflect.InvocationTargetException;
    import java.lang.reflect.Method;
    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    import javax.xml.parsers.FactoryConfigurationError;
    import javax.xml.parsers.ParserConfigurationException;
    import org.xml.sax.SAXException;
    import org.xml.sax.SAXParseException;
    import org.w3c.dom.Document;
    import org.w3c.dom.DOMException;
    import org.w3c.dom.Node;
    import java.util.Stack;
    public class XMLDAO {
         public static String getXMLWithHeader(Object obj){
              return "<?xml version=\"0\"?>" + getXML(obj);
          * Returns an XML representation of an arbitrary object
         public static String getXML(Object obj){
              StringBuffer buffer = new StringBuffer();
              AccessorMethod[] accessorMethods = getAccessorMethods(obj);
              buffer.append("<" + obj.getClass().getName() + ">\n");
              //List
              if(obj instanceof List){
                   List objList = (List)obj;
                   Iterator iterator = objList.iterator();
                   while(iterator.hasNext()){                              
                        buffer.append(getXML(iterator.next()));
              else{
                   for(int i = 0; i < accessorMethods.length; i++){
                        Object fieldObj = null;
                        try{
                             fieldObj = accessorMethods.invoke();
                             1. Primitive Wrapper or String(base case)
                             if(fieldObj instanceof Integer || fieldObj instanceof Float || fieldObj instanceof Double
                                  || fieldObj instanceof Long || fieldObj instanceof String){
                                  buffer.append("<" + accessorMethods[i].getAccessorFieldName() + ">");
                                  buffer.append(accessorMethods[i].invoke());
                                  buffer.append("</" + accessorMethods[i].getAccessorFieldName() + ">\n");
                             else if(fieldObj instanceof Object[]){
                                  buffer.append("<" + accessorMethods[i].getAccessorFieldName() + ">\n");
                                  Object[] fieldArray = (Object[])fieldObj;
                                  for(int j = 0; j < fieldArray.length; j++)
                                       buffer.append(getXML(fieldArray[i]));
                                  buffer.append("</" + accessorMethods[i].getAccessorFieldName() + ">\n");
                        }catch(Exception e){
                             System.out.println("Couldn't invoke method: " + accessorMethods[i].getName());
              buffer.append("</" + obj.getClass().getName() + ">\n");
              return buffer.toString();
         * Returns the Object representation for the XML - used to rebuild Java objects
         * converted to XML by XMLDAO.getXML().
         public static Object getObject(String xmlString) throws ParserConfigurationException,
              SAXException, IOException{
              //the root element is the class name
              DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
              DocumentBuilder builder = factory.newDocumentBuilder();
              Document document = builder.parse(xmlString);
              Stack objectStack = new Stack();
              return getObject(document);
         private static Object getObject(Node n){
              //every document is either an object or a bean property
              //all bean properties have values
              //no object has a value, it can only have bean properties
              //the base case occurs when the document has a value
              String nodeName = n.getNodeName();
              if(n.getNodeValue() == null){
                   System.out.println("node " + nodeName + " is an object");
              else{
                   System.out.println("node " + nodeName + " is a bean property");
              return null;
         * Returns all of the "getter" methods for the given object
         private static AccessorMethod[] getAccessorMethods(Object obj){
              Class theClass = obj.getClass();
              Method[] objMethods = theClass.getMethods();
              ArrayList methodList = new ArrayList();
              for(int i = 0; i < objMethods.length; i++){
                   try{
                        methodList.add(new AccessorMethod(obj, objMethods[i]));
                   }catch(IllegalArgumentException e){}
              return (AccessorMethod[])methodList.toArray(new AccessorMethod[methodList.size()]);
         * Invokes the specified "getter" method and returns the result as an Object
         private Object invokeAccessorMethod(Object obj, Method m) throws IllegalAccessException,
              InvocationTargetException{
              return m.invoke(obj, null);
    package com.uhg.aarp.compas.persistence.common.xml;
    import java.lang.reflect.InvocationTargetException;
    import java.lang.reflect.Method;
    * Represents an AccessorMethod (i.e. getField()) on an Object
    public class AccessorMethod{
         private Object obj;
         private Method m;
         private String accessorFieldName;
         * Constructor for AccessorMethod
         public AccessorMethod(Object obj, Method m) throws IllegalArgumentException{
              1. Method name starts with get
              2. Method name does not equal get
              3. Method takes no arguments
              4. Method return type is not void
              String methodName = m.getName();
              if(methodName.indexOf("get") != 0 || methodName.length() == 3 &&
                   m.getParameterTypes().length != 0 && m.getReturnType() != null){
                   throw new IllegalArgumentException("Not a valid getter method " + methodName);
              this.obj = obj;
              this.m = m;
              String tempName = m.getName().substring(3, m.getName().length());
              this.accessorFieldName = Character.toLowerCase(tempName.charAt(0)) + tempName.substring(1, tempName.length());
         public Object invoke() throws IllegalAccessException, InvocationTargetException{
              return m.invoke(obj, null);
         * Gets the m
         * @return Returns a Method
         public Method getM() {
              return m;
         * Sets the m
         * @param m The m to set
         public void setM(Method m) {
              this.m = m;
         * Gets the accessorFieldName
         * @return Returns a String
         public String getAccessorFieldName() {
              return accessorFieldName;
         * Sets the accessorFieldName
         * @param accessorFieldName The accessorFieldName to set
         public void setAccessorFieldName(String accessorFieldName) {
              this.accessorFieldName = accessorFieldName;
         * Gets the obj
         * @return Returns a Object
         public Object getObj() {
              return obj;
         * Sets the obj
         * @param obj The obj to set
         public void setObj(Object obj) {
              this.obj = obj;
         public String getName(){
              return this.m.getName();
    I'm having some trouble figuring out how to implement the XMLDAO.getObject(Node n) method. I was thinking of maintaining a Stack of the previous Objects as I traverse the DOM, but I think that might be unnecessary work. Basically I'm wondering how I determine what the last "object" is in the DOM from any given node. Anyone have any input?

    I think the end of my post got cut off:
    I'm having some trouble figuring out how to implement the XMLDAO.getObject(Node n) method. I was thinking of maintaining a Stack of the previous Objects as I traverse the DOM, but I think that might be unnecessary work. Basically I'm wondering how I determine what the last "object" is in the DOM from any given node. Anyone have any input?

  • Nullpointer exception while multiple users reading from XML DOM object

    We are getting a null pointer exception when we are trying to read from a Static XML DOM object . We are getting the exception in weblogic 7.1 very rarely but started getting the exception in weblogic 9.2 more frequently. When multiple users are trying to access the Static variable we are getting null pointer exception. I think it is a memory related issue. Making the whole method synchronized is resolving the issue. But that is not the right thing to do. Can any one know what might be the issue here?
    I am giving the code and the XML. I have tried to give the latest Xerces parser from the Apache site but got the same exception. Please help me in this regard.
    The XML is also provided below along with the code.
    package com.test;
    import java.beans.BeanInfo;
    import java.beans.Introspector;
    import java.util.ArrayList;
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    //import org.apache.xml.serialize.XMLSerializer;
    import org.w3c.dom.Document;
    import org.w3c.dom.Node;
    import org.w3c.dom.NodeList;
    public class ObjectPersistanceXMLParser {
         public static volatile Document configXML;
         * @param objectName
         * @param attributeName
         * @return
         * @throws Throwable
         public static ArrayList getData(String objectName,String attributeName) throws Exception
              Node ndDoc = getXMLDoc();
              Node ndRoot = ndDoc.getFirstChild();
              NodeList ndFirstList = ndRoot.getChildNodes();
              BeanInfo bi = Introspector.getBeanInfo(ndFirstList.getClass());
              System.out.println("****** "+bi.getBeanDescriptor().getBeanClass().getName());
              System.out.println("This is the number of child nodes present:"+ndFirstList.getLength()+":::"+ndFirstList.item(0).getNodeValue());
              ArrayList returnResult = null;
              String strReturnResult = null;
              for(int i=0;i<ndFirstList.getLength();i++)
                   if(ndFirstList.item(i).getNodeName().equals("ObjectDBMapping"))
                        NodeList ndObjectList = ndFirstList.item(i).getChildNodes();
                        for(int j=0;j<ndObjectList.getLength();j++)
                             if(ndObjectList.item(j).getNodeName().equals("Object"))
                                  if(ndObjectList.item(j).getAttributes().getNamedItem("NAME").getNodeValue().equalsIgnoreCase(objectName))
                                       NodeList ndFieldList = ndObjectList.item(j).getChildNodes();
                                       for(int k=0;k<ndFieldList.getLength();k++)
                                            if(ndFieldList.item(k).getNodeName().equals("field"))
                                                 if(ndFieldList.item(k).getAttributes().getNamedItem("NAME").getNodeValue().equalsIgnoreCase(attributeName))
                                                      returnResult = new ArrayList();
                                                      returnResult.add(ndFieldList.item(k).getAttributes().getNamedItem("SOURCE_TABLE").getNodeValue());
                                                      returnResult.add(ndFieldList.item(k).getAttributes().getNamedItem("SOURCE_COLUMN").getNodeValue());
                                                      returnResult.add(ndFieldList.item(k).getAttributes().getNamedItem("TYPE").getNodeValue());
                                                      returnResult.add(ndFieldList.item(k).getAttributes().getNamedItem("PERSIST").getNodeValue());
                                                      returnResult.add(ndFieldList.item(k).getAttributes().getNamedItem("DEFAULT_VALUE").getNodeValue());
                                                      returnResult.add(ndFieldList.item(k).getAttributes().getNamedItem("PRIMARY_KEY").getNodeValue());
                                                      returnResult.add(ndFieldList.item(k).getAttributes().getNamedItem("VERSIONABLE").getNodeValue());
                                                      returnResult.add(ndFieldList.item(k).getAttributes().getNamedItem("PRECISION").getNodeValue());
                                                      returnResult.add(ndFieldList.item(k).getAttributes().getNamedItem("FOREIGN_KEY").getNodeValue());
                                                      returnResult.add(ndFieldList.item(k).getAttributes().getNamedItem("PARENT_TABLE").getNodeValue());
                                                      returnResult.add(ndFieldList.item(k).getAttributes().getNamedItem("PARENT_COLUMN").getNodeValue());
                                                      returnResult.add(ndFieldList.item(k).getAttributes().getNamedItem("LEVEL").getNodeValue());
                                                      //return returnResult;
              if(strReturnResult == null){
                   System.out.println("This is the current state of dom: ");
                   //printDom((Document)ndDoc);
                   if(!attributeName.trim().equalsIgnoreCase("class") &&
                        !attributeName.trim().equalsIgnoreCase("operationFlag")&&
                        !attributeName.trim().equalsIgnoreCase("primaryKeyColumnName")&&
                        !attributeName.trim().equalsIgnoreCase("tableName"))               
                        System.out.println("No DB Mapping found for Object "+objectName+" and attribute "+attributeName);
              return returnResult;
         * @param objectName
         * @param tableName
         * @return
         * @throws Throwable
         public static int getMaxFields(String objectName,String tableName) throws Throwable
              Node ndDoc = getXMLDoc();
              Node ndRoot = ndDoc.getFirstChild();
              NodeList ndFirstList = ndRoot.getChildNodes();
              int returnResult = 0;
              for(int i=0;i<ndFirstList.getLength();i++)
                   if(ndFirstList.item(i).getNodeName().equals("ObjectDBMapping"))
                        NodeList ndObjectList = ndFirstList.item(i).getChildNodes();
                        for(int j=0;j<ndObjectList.getLength();j++)
                             if(ndObjectList.item(j).getNodeName().equals("Object"))
                                  if(ndObjectList.item(j).getAttributes().getNamedItem("NAME").getNodeValue().equalsIgnoreCase(objectName))
                                       NodeList ndFieldList = ndObjectList.item(j).getChildNodes();
                                       for(int k=0;k<ndFieldList.getLength();k++)
                                            if(ndFieldList.item(k).getNodeName().equals("field"))
                                                 if(ndFieldList.item(k).getAttributes().getNamedItem("SOURCE_TABLE").getNodeValue().equalsIgnoreCase(tableName) &&
                                                           ndFieldList.item(k).getAttributes().getNamedItem("PERSIST").getNodeValue().equalsIgnoreCase("Y"))
                                                      returnResult++;
              return returnResult;
         /*This method returns a Document Object of the ObjectConfig.xml file. This method is separated
         * out from the calling method to keep an option OPEN in case it is later decided to read XML
         * from memory instead of physical location.*/
         public static Document getXMLDoc() throws Exception
              if(configXML == null)
                   synchronized (ObjectPersistanceXMLParser.class)
                        if(configXML == null)
                             if(System.getProperty("OBJECT-CONFIG-XML") == null){
                                  System.out.println("System Property OBJECT-CONFIG-XML not found");
                             String filePath = System.getProperty("OBJECT-CONFIG-XML");
                             System.out.println("Reading CONFIG Xml from file - "+filePath);
                             DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
                             BeanInfo bi = Introspector.getBeanInfo(docBuilderFactory.getClass());
                             System.out.println("****** "+bi.getBeanDescriptor().getBeanClass().getName());
                             try
                        DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
                        configXML = docBuilder.parse(filePath);
                   }catch(Throwable t)
                        int errorCode = 111;
                        String errorMsg = "Problem in parsing OBJECT-CONFIG-XML file";
                        System.out.println(errorMsg);
              else
                   System.out.println("Config XML Loaded from memory.....new");
    return configXML;
         public static void main(String args[]) throws Throwable
         /*public synchronized static void printDom(Document doc){
              XMLSerializer ser = new XMLSerializer(System.out, null);
              try {
                   ser.serialize(doc);
              } catch (Throwable e) {
                   e.printStackTrace();
              System.out.flush();
    <?xml version="1.0"?><root>
         <ObjectDBMapping>
              <Object NAME="com.los.common.entity.LoanTask">
                   <field NAME="loanTaskId" SOURCE_TABLE="UW_LOAN_TASKS"
                        SOURCE_COLUMN="LOAN_TASK_ID" TYPE="NUMBER" LENGTH="20"
                        PRECISION="" PERSIST="Y" LEVEL="1" DEFAULT_VALUE="" PRIMARY_KEY="Y"
                        VERSIONABLE="Y" FOREIGN_KEY="N" PARENT_TABLE="" PARENT_COLUMN="">
                   </field>
                   <field NAME="taskId" SOURCE_TABLE="UW_LOAN_TASKS"
                        SOURCE_COLUMN="TASK_ID" TYPE="NUMBER" LENGTH="20"
                        PRECISION="" PERSIST="Y" LEVEL="1" DEFAULT_VALUE="" PRIMARY_KEY="N"
                        VERSIONABLE="Y" FOREIGN_KEY="Y" PARENT_TABLE="UWM_TASK_MASTER" PARENT_COLUMN="TASK_ID">
                   </field>
                   <field NAME="taskName" SOURCE_TABLE="UW_LOAN_TASKS"
                        SOURCE_COLUMN="TASK_NAME" TYPE="VARCHAR2" LENGTH="100"
                        PRECISION="" PERSIST="Y" LEVEL="1" DEFAULT_VALUE="" PRIMARY_KEY="N"
                        VERSIONABLE="Y" FOREIGN_KEY="" PARENT_TABLE="" PARENT_COLUMN="">
                   </field>
                   <field NAME="taskStatus" SOURCE_TABLE="UW_LOAN_TASKS"
                        SOURCE_COLUMN="TASK_STATUS" TYPE="VARCHAR2" LENGTH="20"
                        PRECISION="" PERSIST="Y" LEVEL="1" DEFAULT_VALUE="" PRIMARY_KEY="N"
                        VERSIONABLE="Y" FOREIGN_KEY="" PARENT_TABLE="" PARENT_COLUMN="">
                   </field>
                   <field NAME="taskCreationDate" SOURCE_TABLE="UW_LOAN_TASKS"
                        SOURCE_COLUMN="TASK_CREATION_DATE" TYPE="DATE" LENGTH=""
                        PRECISION="" PERSIST="Y" LEVEL="1" DEFAULT_VALUE="" PRIMARY_KEY="N"
                        VERSIONABLE="Y" FOREIGN_KEY="" PARENT_TABLE="" PARENT_COLUMN="">
                   </field>
                   <field NAME="taskClosureDate" SOURCE_TABLE="UW_LOAN_TASKS"
                        SOURCE_COLUMN="TASK_CLOSURE_DATE" TYPE="DATE" LENGTH=""
                        PRECISION="" PERSIST="Y" LEVEL="1" DEFAULT_VALUE="" PRIMARY_KEY="N"
                        VERSIONABLE="Y" FOREIGN_KEY="" PARENT_TABLE="" PARENT_COLUMN="">
                   </field>
                   <field NAME="taskClosedBy" SOURCE_TABLE="UW_LOAN_TASKS"
                        SOURCE_COLUMN="TASK_CLOSED_BY" TYPE="VARCHAR2" LENGTH="20"
                        PRECISION="" PERSIST="Y" LEVEL="1" DEFAULT_VALUE="" PRIMARY_KEY="N"
                        VERSIONABLE="Y" FOREIGN_KEY="" PARENT_TABLE="" PARENT_COLUMN="">
                   </field>
                   <field NAME="updatedDate" SOURCE_TABLE="UW_LOAN_TASKS"
                        SOURCE_COLUMN="UPDATED_DATE" TYPE="DATE" LENGTH=""
                        PRECISION="" PERSIST="Y" LEVEL="1" DEFAULT_VALUE="" PRIMARY_KEY="N"
                        VERSIONABLE="Y" FOREIGN_KEY="" PARENT_TABLE="" PARENT_COLUMN="">
                   </field>
                   <field NAME="updatedBy" SOURCE_TABLE="UW_LOAN_TASKS"
                        SOURCE_COLUMN="UPDATED_BY" TYPE="VARCHAR2" LENGTH="20"
                        PRECISION="" PERSIST="Y" LEVEL="1" DEFAULT_VALUE="" PRIMARY_KEY="N"
                        VERSIONABLE="Y" FOREIGN_KEY="" PARENT_TABLE="" PARENT_COLUMN="">
                   </field>
                   <field NAME="createdDate" SOURCE_TABLE="UW_LOAN_TASKS"
                        SOURCE_COLUMN="CREATED_DATE" TYPE="DATE" LENGTH=""
                        PRECISION="" PERSIST="Y" LEVEL="1" DEFAULT_VALUE="" PRIMARY_KEY="N"
                        VERSIONABLE="Y" FOREIGN_KEY="" PARENT_TABLE="" PARENT_COLUMN="">
                   </field>
                   <field NAME="createdBy" SOURCE_TABLE="UW_LOAN_TASKS"
                        SOURCE_COLUMN="CREATED_BY" TYPE="VARCHAR2" LENGTH="20"
                        PRECISION="" PERSIST="Y" LEVEL="1" DEFAULT_VALUE="" PRIMARY_KEY="N"
                        VERSIONABLE="Y" FOREIGN_KEY="" PARENT_TABLE="" PARENT_COLUMN="">
                   </field>
              </Object>
              <Object NAME="com.los.common.entity.LOSUnderwritingRules">
                   <field NAME="undwRunRuleId" SOURCE_TABLE="UW_UNDERWRITING_RULES"
                        SOURCE_COLUMN="UNDW_RUN_RULE_ID" TYPE="NUMBER" LENGTH="20"
                        PRECISION="" PERSIST="Y" LEVEL="1" DEFAULT_VALUE="" PRIMARY_KEY="Y"
                        VERSIONABLE="Y" FOREIGN_KEY="" PARENT_TABLE="" PARENT_COLUMN="">
                   </field>
                   <field NAME="underwritingRunNo" SOURCE_TABLE="UW_UNDERWRITING_RULES"
                        SOURCE_COLUMN="UNDERWRITING_RUN_NO" TYPE="NUMBER" LENGTH="20"
                        PRECISION="" PERSIST="Y" LEVEL="1" DEFAULT_VALUE="" PRIMARY_KEY="N"
                        VERSIONABLE="Y" FOREIGN_KEY="" PARENT_TABLE="" PARENT_COLUMN="">
                   </field>
                   <field NAME="underwritingRunId" SOURCE_TABLE="UW_UNDERWRITING_RULES"
                        SOURCE_COLUMN="UNDERWRITING_RUN_ID" TYPE="NUMBER" LENGTH="20"
                        PRECISION="" PERSIST="Y" LEVEL="1" DEFAULT_VALUE="" PRIMARY_KEY="N"
                        VERSIONABLE="Y" FOREIGN_KEY="" PARENT_TABLE="" PARENT_COLUMN="">
                   </field>
                   <field NAME="ruleGroup" SOURCE_TABLE="UW_UNDERWRITING_RULES"
                        SOURCE_COLUMN="RULE_GROUP" TYPE="VARCHAR2" LENGTH="20"
                        PRECISION="" PERSIST="Y" LEVEL="1" DEFAULT_VALUE="" PRIMARY_KEY="N"
                        VERSIONABLE="Y" FOREIGN_KEY="" PARENT_TABLE="" PARENT_COLUMN="">
                   </field>
                   <field NAME="ruleName" SOURCE_TABLE="UW_UNDERWRITING_RULES"
                        SOURCE_COLUMN="RULE_NAME" TYPE="VARCHAR2" LENGTH="20"
                        PRECISION="" PERSIST="Y" LEVEL="1" DEFAULT_VALUE="" PRIMARY_KEY="N"
                        VERSIONABLE="Y" FOREIGN_KEY="" PARENT_TABLE="" PARENT_COLUMN="">
                   </field>
                   <field NAME="messageCode" SOURCE_TABLE="UW_UNDERWRITING_RULES"
                        SOURCE_COLUMN="MESSAGE_CODE" TYPE="VARCHAR2" LENGTH="20"
                        PRECISION="" PERSIST="Y" LEVEL="1" DEFAULT_VALUE="" PRIMARY_KEY="N"
                        VERSIONABLE="Y" FOREIGN_KEY="" PARENT_TABLE="" PARENT_COLUMN="">
                   </field>
                   <field NAME="messageText" SOURCE_TABLE="UW_UNDERWRITING_RULES"
                        SOURCE_COLUMN="MESSAGE_TEXT" TYPE="VARCHAR2" LENGTH="20"
                        PRECISION="" PERSIST="Y" LEVEL="1" DEFAULT_VALUE="" PRIMARY_KEY="N"
                        VERSIONABLE="Y" FOREIGN_KEY="" PARENT_TABLE="" PARENT_COLUMN="">
                   </field>
                   <field NAME="passFail" SOURCE_TABLE="UW_UNDERWRITING_RULES"
                        SOURCE_COLUMN="PASS_FAIL" TYPE="VARCHAR2" LENGTH="20"
                        PRECISION="" PERSIST="Y" LEVEL="1" DEFAULT_VALUE="" PRIMARY_KEY="N"
                        VERSIONABLE="Y" FOREIGN_KEY="" PARENT_TABLE="" PARENT_COLUMN="">
                   </field>
                   <field NAME="overrideAuthorityLevel" SOURCE_TABLE="UW_UNDERWRITING_RULES"
                        SOURCE_COLUMN="OVERRIDE_AUTHORITY_LEVEL" TYPE="VARCHAR2" LENGTH="20"
                        PRECISION="" PERSIST="Y" LEVEL="1" DEFAULT_VALUE="" PRIMARY_KEY="N"
                        VERSIONABLE="Y" FOREIGN_KEY="" PARENT_TABLE="" PARENT_COLUMN="">
                   </field>
                   <field NAME="overrideYN" SOURCE_TABLE="UW_UNDERWRITING_RULES"
                        SOURCE_COLUMN="OVERRIDE_Y_N" TYPE="VARCHAR2" LENGTH="20"
                        PRECISION="" PERSIST="Y" LEVEL="1" DEFAULT_VALUE="" PRIMARY_KEY="N"
                        VERSIONABLE="Y" FOREIGN_KEY="" PARENT_TABLE="" PARENT_COLUMN="">
                   </field>
                   <field NAME="overrideBy" SOURCE_TABLE="UW_UNDERWRITING_RULES"
                        SOURCE_COLUMN="OVERRIDE_BY" TYPE="VARCHAR2" LENGTH="20"
                        PRECISION="" PERSIST="Y" LEVEL="1" DEFAULT_VALUE="" PRIMARY_KEY="N"
                        VERSIONABLE="Y" FOREIGN_KEY="" PARENT_TABLE="" PARENT_COLUMN="">
                   </field>
                   <field NAME="overrideOn" SOURCE_TABLE="UW_UNDERWRITING_RULES"
                        SOURCE_COLUMN="OVERRIDE_ON" TYPE="DATE" LENGTH=""
                        PRECISION="" PERSIST="Y" LEVEL="1" DEFAULT_VALUE="" PRIMARY_KEY="N"
                        VERSIONABLE="Y" FOREIGN_KEY="" PARENT_TABLE="" PARENT_COLUMN="">
                   </field>
                   <field NAME="createdBy" SOURCE_TABLE="UW_UNDERWRITING_RULES"
                        SOURCE_COLUMN="CREATED_BY" TYPE="VARCHAR2" LENGTH="20"
                        PRECISION="" PERSIST="Y" LEVEL="1" DEFAULT_VALUE="" PRIMARY_KEY="N"
                        VERSIONABLE="Y" FOREIGN_KEY="" PARENT_TABLE="" PARENT_COLUMN="">
                   </field>
                   <field NAME="updatedBy" SOURCE_TABLE="UW_UNDERWRITING_RULES"
                        SOURCE_COLUMN="UPDATED_BY" TYPE="VARCHAR2" LENGTH="20"
                        PRECISION="" PERSIST="Y" LEVEL="1" DEFAULT_VALUE="" PRIMARY_KEY="N"
                        VERSIONABLE="Y" FOREIGN_KEY="" PARENT_TABLE="" PARENT_COLUMN="">
                   </field>
                   <field NAME="createdDate" SOURCE_TABLE="UW_UNDERWRITING_RULES"
                        SOURCE_COLUMN="CREATED_DATE" TYPE="DATE" LENGTH=""
                        PRECISION="" PERSIST="Y" LEVEL="1" DEFAULT_VALUE="" PRIMARY_KEY="N"
                        VERSIONABLE="Y" FOREIGN_KEY="" PARENT_TABLE="" PARENT_COLUMN="">
                   </field>
                   <field NAME="updatedDate" SOURCE_TABLE="UW_UNDERWRITING_RULES"
                        SOURCE_COLUMN="UPDATED_DATE" TYPE="DATE" LENGTH=""
                        PRECISION="" PERSIST="Y" LEVEL="1" DEFAULT_VALUE="" PRIMARY_KEY="N"
                        VERSIONABLE="Y" FOREIGN_KEY="" PARENT_TABLE="" PARENT_COLUMN="">
                   </field>
                   <field NAME="processName" SOURCE_TABLE="UW_UNDERWRITING_RULES"
                        SOURCE_COLUMN="PROCESS_NAME" TYPE="VARCHAR2" LENGTH="100"
                        PRECISION="" PERSIST="Y" LEVEL="1" DEFAULT_VALUE="" PRIMARY_KEY="N"
                        VERSIONABLE="Y" FOREIGN_KEY="" PARENT_TABLE="" PARENT_COLUMN="">
                   </field>
                   <field NAME="overrideReason" SOURCE_TABLE="UW_UNDERWRITING_RULES"
                        SOURCE_COLUMN="OVERRIDE_REASON" TYPE="VARCHAR2" LENGTH="1000"
                        PRECISION="" PERSIST="Y" LEVEL="1" DEFAULT_VALUE="" PRIMARY_KEY="N"
                        VERSIONABLE="Y" FOREIGN_KEY="" PARENT_TABLE="" PARENT_COLUMN="">
                   </field>
                   <field NAME="messageModule" SOURCE_TABLE="UW_UNDERWRITING_RULES"
                        SOURCE_COLUMN="MESSAGE_MODULE" TYPE="VARCHAR2" LENGTH="30"
                        PRECISION="" PERSIST="Y" LEVEL="1" DEFAULT_VALUE="" PRIMARY_KEY="N"
                        VERSIONABLE="Y" FOREIGN_KEY="" PARENT_TABLE="" PARENT_COLUMN="">
                   </field>
              </Object>
              <Object NAME="com.los.common.entity.Applicant">
                   <field NAME="applicantId" SOURCE_TABLE="UW_APPLICANT_MASTER"
                        SOURCE_COLUMN="APPLICANT_ID" TYPE="NUMBER" LENGTH="20"
                        PRECISION="" PERSIST="Y" LEVEL="1" DEFAULT_VALUE="" PRIMARY_KEY="Y"
                        VERSIONABLE="N" FOREIGN_KEY="" PARENT_TABLE="" PARENT_COLUMN="">
                   </field>
              <field NAME="registrationNumber" SOURCE_TABLE="UW_APPLICANT_MASTER"
                        SOURCE_COLUMN="REGISTRATION_NUMBER" TYPE="NUMBER" LENGTH="20"
                        PRECISION="" PERSIST="Y" LEVEL="1" DEFAULT_VALUE="" PRIMARY_KEY="N"
                        VERSIONABLE="N" FOREIGN_KEY="" PARENT_TABLE="" PARENT_COLUMN="">
              </field>
              <field NAME="cifNumber" SOURCE_TABLE="UW_APPLICANT_MASTER"
                        SOURCE_COLUMN="CIF_NUMBER" TYPE="NUMBER" LENGTH="20"
                        PRECISION="" PERSIST="Y" LEVEL="1" DEFAULT_VALUE="" PRIMARY_KEY="N"
                        VERSIONABLE="N" FOREIGN_KEY="" PARENT_TABLE="" PARENT_COLUMN="">
                        </field>
              <field NAME="customerStatus" SOURCE_TABLE="UW_APPLICANT_MASTER"
                        SOURCE_COLUMN="CUSTOMER_STATUS" TYPE="VARCHAR2" LENGTH="20"
                        PRECISION="" PERSIST="Y" LEVEL="1" DEFAULT_VALUE="" PRIMARY_KEY="N"
                        VERSIONABLE="N" FOREIGN_KEY="" PARENT_TABLE="" PARENT_COLUMN="">
                   </field>
              <field NAME="customerType" SOURCE_TABLE="UW_APPLICANT_MASTER"
                        SOURCE_COLUMN="CUSTOMER_TYPE" TYPE="VARCHAR2" LENGTH="20"
                        PRECISION="" PERSIST="Y" LEVEL="1" DEFAULT_VALUE="" PRIMARY_KEY="N"
                        VERSIONABLE="N" FOREIGN_KEY="" PARENT_TABLE="" PARENT_COLUMN="">
                   </field>
              <field NAME="applicantLastName" SOURCE_TABLE="UW_APPLICANT_DETAILS"
                        SOURCE_COLUMN="APPLICANT_LAST_NAME" TYPE="VARCHAR2" LENGTH="100"
                        PRECISION="" PERSIST="Y" LEVEL="2" DEFAULT_VALUE="" PRIMARY_KEY="N"
                        VERSIONABLE="Y" FOREIGN_KEY="" PARENT_TABLE="" PARENT_COLUMN="">
                   </field>
              <field NAME="applicantFirstName" SOURCE_TABLE="UW_APPLICANT_DETAILS"
                   SOURCE_COLUMN="APPLICANT_FIRST_NAME" TYPE="VARCHAR2" LENGTH="100"
                   PRECISION="" PERSIST="Y" LEVEL="2" DEFAULT_VALUE="" PRIMARY_KEY="N"
                   VERSIONABLE="Y" FOREIGN_KEY="" PARENT_TABLE="" PARENT_COLUMN="">
              </field>
              <field NAME="applicantMiddleName" SOURCE_TABLE="UW_APPLICANT_DETAILS"
                   SOURCE_COLUMN="APPLICANT_MIDDLE_NAME" TYPE="VARCHAR2" LENGTH="100"
                   PRECISION="" PERSIST="Y" LEVEL="2" DEFAULT_VALUE="" PRIMARY_KEY="N"
                   VERSIONABLE="Y" FOREIGN_KEY="" PARENT_TABLE="" PARENT_COLUMN="">
              </field>
              <field NAME="applicantNameSuffix" SOURCE_TABLE="UW_APPLICANT_DETAILS"
                   SOURCE_COLUMN="APPLICANT_NAME_SUFFIX" TYPE="VARCHAR2" LENGTH="20"
                   PRECISION="" PERSIST="Y" LEVEL="2" DEFAULT_VALUE="" PRIMARY_KEY="N"
                   VERSIONABLE="Y" FOREIGN_KEY="" PARENT_TABLE="" PARENT_COLUMN="">
              </field>
              <field NAME="nationality" SOURCE_TABLE="UW_APPLICANT_DETAILS"
                   SOURCE_COLUMN="NATIONALITY" TYPE="VARCHAR2" LENGTH="100"
                   PRECISION="" PERSIST="Y" LEVEL="2" DEFAULT_VALUE="" PRIMARY_KEY="N"
                   VERSIONABLE="Y" FOREIGN_KEY="" PARENT_TABLE="" PARENT_COLUMN="">
              </field>
              <field NAME="age" SOURCE_TABLE="UW_APPLICANT_DETAILS"
                   SOURCE_COLUMN="AGE" TYPE="NUMBER" LENGTH="5"
                   PRECISION="2" PERSIST="Y" LEVEL="2" DEFAULT_VALUE="" PRIMARY_KEY="N"
                   VERSIONABLE="Y" FOREIGN_KEY="" PARENT_TABLE="" PARENT_COLUMN="">
              </field>
              <field NAME="dateOfBirth" SOURCE_TABLE="UW_APPLICANT_DETAILS"
                   SOURCE_COLUMN="DATE_OF_BIRTH" TYPE="DATE" LENGTH=""
                   PRECISION="" PERSIST="Y" LEVEL="2" DEFAULT_VALUE="" PRIMARY_KEY="N"
                   VERSIONABLE="Y" FOREIGN_KEY="" PARENT_TABLE="" PARENT_COLUMN="">
              </field>
              <field NAME="identificationType1" SOURCE_TABLE="UW_APPLICANT_DETAILS"
                   SOURCE_COLUMN="IDENTIFICATION_TYPE1" TYPE="VARCHAR2" LENGTH="20"
                   PRECISION="" PERSIST="Y" LEVEL="2" DEFAULT_VALUE="" PRIMARY_KEY="N"
                   VERSIONABLE="Y" FOREIGN_KEY="" PARENT_TABLE="" PARENT_COLUMN="">
              </field>
              <field NAME="identificationType2" SOURCE_TABLE="UW_APPLICANT_DETAILS"
                   SOURCE_COLUMN="IDENTIFICATION_TYPE2" TYPE="VARCHAR2" LENGTH="20"
                   PRECISION="" PERSIST="Y" LEVEL="2" DEFAULT_VALUE="" PRIMARY_KEY="N"
                   VERSIONABLE="Y" FOREIGN_KEY="" PARENT_TABLE="" PARENT_COLUMN="">
              </field>
              <field NAME="identificationType" SOURCE_TABLE="UW_APPLICANT_DETAILS"
                   SOURCE_COLUMN="IDENTIFICATION_TYPE" TYPE="VARCHAR2" LENGTH="20"
                   PRECISION="" PERSIST="Y" LEVEL="2" DEFAULT_VALUE="" PRIMARY_KEY="N"
                   VERSIONABLE="Y" FOREIGN_KEY="" PARENT_TABLE="" PARENT_COLUMN="">
              </field>
              <field NAME="identificationNumber1" SOURCE_TABLE="UW_APPLICANT_DETAILS"
                   SOURCE_COLUMN="IDENTIFICATION_NUMBER1" TYPE="VARCHAR2" LENGTH="100"
                   PRECISION="" PERSIST="Y" LEVEL="2" DEFAULT_VALUE="" PRIMARY_KEY="N"
                   VERSIONABLE="Y" FOREIGN_KEY="" PARENT_TABLE="" PARENT_COLUMN="">
              </field>
              <field NAME="identificationNumber2" SOURCE_TABLE="UW_APPLICANT_DETAILS"
                   SOURCE_COLUMN="IDENTIFICATION_NUMBER2" TYPE="VARCHAR2" LENGTH="100"
                   PRECISION="" PERSIST="Y" LEVEL="2" DEFAULT_VALUE="" PRIMARY_KEY="N"
                   VERSIONABLE="Y" FOREIGN_KEY="" PARENT_TABLE="" PARENT_COLUMN="">
              </field>
              <field NAME="identificationNumber" SOURCE_TABLE="UW_APPLICANT_DETAILS"
                   SOURCE_COLUMN="IDENTIFICATION_NUMBER" TYPE="VARCHAR2" LENGTH="100"
                   PRECISION="" PERSIST="Y" LEVEL="2" DEFAULT_VALUE="" PRIMARY_KEY="N"
                   VERSIONABLE="Y" FOREIGN_KEY="" PARENT_TABLE="" PARENT_COLUMN="">
              </field>
              <field NAME="guarantorIndicator" SOURCE_TABLE="UW_APPLICANT_DETAILS"
                   SOURCE_COLUMN="GUARANTOR_INDICATOR" TYPE="VARCHAR2" LENGTH="50"
                   PRECISION="" PERSIST="Y" LEVEL="2" DEFAULT_VALUE="" PRIMARY_KEY="N"
                   VERSIONABLE="Y" FOREIGN_KEY="" PARENT_TABLE="" PARENT_COLUMN="">
              </field>
              <field NAME="separateCobDisclosureRequir" SOURCE_TABLE="UW_APPLICANT_DETAILS"
                   SOURCE_COLUMN="SEPARATE_COB_DISCLOSURE_REQUIR" TYPE="VARCHAR2" LENGTH="20"
                   PRECISION="" PERSIST="Y" LEVEL="2" DEFAULT_VALUE="" PRIMARY_KEY="N"
                   VERSIONABLE="Y" FOREIGN_KEY="" PARENT_TABLE="" PARENT_COLUMN="">
              </field>
              <field NAME="domesticRisk" SOURCE_TABLE="UW_APPLICANT_DETAILS"
                   SOURCE_COLUMN="DOMESTIC_RISK" TYPE="VARCHAR2" LENGTH="20"
                   PRECISION="" PERSIST="Y" LEVEL="2" DEFAULT_VALUE="" PRIMARY_KEY="N"
                   VERSIONABLE="Y" FOREIGN_KEY="" PARENT_TABLE="" PARENT_COLUMN="">
              </field>
              <field NAME="crossBorderRisk" SOURCE_TABLE="UW_APPLICANT_DETAILS"
                   SOURCE_COLUMN="CROSS_BORDER_RISK" TYPE="VARCHAR2" LENGTH="20"
                   PRECISION="" PERSIST="Y" LEVEL="2" DEFAULT_VALUE="" PRIMARY_KEY="N"
                   VERSIONABLE="Y" FOREIGN_KEY="" PARENT_TABLE="" PARENT_COLUMN="">
              </field>
              <field NAME="title" SOURCE_TABLE="UW_APPLICANT_DETAILS"
                   SOURCE_COLUMN="TITLE" TYPE="VARCHAR2" LENGTH="20"
                   PRECISION="" PERSIST="Y" LEVEL="2" DEFAULT_VALUE="" PRIMARY_KEY="N"
                   VERSIONABLE="Y" FOREIGN_KEY="" PARENT_TABLE="" PARENT_COLUMN="">
              </field>
              <field NAME="previousSurname" SOURCE_TABLE="UW_APPLICANT_DETAILS"
                   SOURCE_COLUMN="PREVIOUS_SURNAME" TYPE="VARCHAR2" LENGTH="50"
                   PRECISION="" PERSIST="Y" LEVEL="2" DEFAULT_VALUE="" PRIMARY_KEY="N"
                   VERSIONABLE="Y" FOREIGN_KEY="" PARENT_TABLE="" PARENT_COLUMN="">
              </field>
              <field NAME="legalName" SOURCE_TABLE="UW_APPLICANT_DETAILS"
                   SOURCE_COLUMN="LEGAL_NAME" TYPE="VARCHAR2" LENGTH="200"
                   PRECISION="" PERSIST="Y" LEVEL="2" DEFAULT_VALUE="" PRIMARY_KEY="N"
                   VERSIONABLE="Y" FOREIGN_KEY="" PARENT_TABLE="" PARENT_COLUMN="">
              </field>
              <field NAME="preferredName" SOURCE_TABLE="UW_APPLICANT_DETAILS"
                   SOURCE_COLUMN="PREFERRED_NAME" TYPE="VARCHAR2" LENGTH="50"
                   PRECISION="" PERSIST="Y" LEVEL="2" DEFAULT_VALUE="" PRIMARY_KEY="N"
                   VERSIONABLE="Y" FOREIGN_KEY="" PARENT_TABLE="" PARENT_COLUMN="">
              </field>
              <field NAME="gender" SOURCE_TABLE="UW_APPLICANT_DETAILS"
                   SOURCE_COLUMN="GENDER" TYPE="VARCHAR2" LENGTH="20"
                   PRECISION="" PERSIST="Y" LEVEL="2" DEFAULT_VALUE="" PRIMARY_KEY="N"
                   VERSIONABLE="Y" FOREIGN_KEY="" PARENT_TABLE="" PARENT_COLUMN="">
              </field>
              <field NAME="seniorCitizenStatus" SOURCE_TABLE="UW_APPLICANT_DETAILS"
                   SOURCE_COLUMN="SENIOR_CITIZEN_STATUS" TYPE="VARCHAR2" LENGTH="20"
                   PRECISION="" PERSIST="Y" LEVEL="2" DEFAULT_VALUE="" PRIMARY_KEY="N"
                   VERSIONABLE="Y" FOREIGN_KEY="" PARENT_TABLE="" PARENT_COLUMN="">
              </field>
              <field NAME="staffIndicator" SOURCE_TABLE="UW_APPLICANT_DETAILS"
                   SOURCE_COLUMN="STAFF_INDICATOR" TYPE="VARCHAR2" LENGTH="20"
                   PRECISION="" PERSIST="Y" LEVEL="2" DEFAULT_VALUE="" PRIMARY_KEY="N"
                   VERSIONABLE="Y" FOREIGN_KEY="" PARENT_TABLE="" PARENT_COLUMN="">
              </field>
              <field NAME="warVeteranIndicator" SOURCE_TABLE="UW_APPLICANT_DETAILS"
                   SOURCE_COLUMN="WAR_VETERAN_INDICATOR" TYPE="VARCHAR2" LENGTH="20"
                   PRECISION="" PERSIST="Y" LEVEL="2" DEFAULT_VALUE="" PRIMARY_KEY="N"
                   VERSIONABLE="Y" FOREIGN_KEY="" PARENT_TABLE="" PARENT_COLUMN="">
              </field>
              <field NAME="noOfDependants" SOURCE_TABLE="UW_APPLICANT_DETAILS"
                   SOURCE_COLUMN="NO_OF_DEPENDANTS" TYPE="NUMBER" LENGTH="20"
                   PRECISION="" PERSIST="Y" LEVEL="2" DEFAULT_VALUE="" PRIMARY_KEY="N"
                   VERSIONABLE="Y" FOREIGN_KEY="" PARENT_TABLE="" PARENT_COLUMN="">
              </field>
              <field NAME="maritalStatus" SOURCE_TABLE="UW_APPLICANT_DETAILS"
                   SOURCE_COLUMN="MARITAL_STATUS" TYPE="VARCHAR2" LENGTH="20"
                   PRECISION="" PERSIST="Y" LEVEL="2" DEFAULT_VALUE="" PRIMARY_KEY="N"
                   VERSIONABLE="Y" FOREIGN_KEY="" PARENT_TABLE="" PARENT_COLUMN="">
              </field>
              <field NAME="educationStatus" SOURCE_TABLE="UW_APPLICANT_DETAILS"
                   SOURCE_COLUMN="EDUCATION_STATUS" TYPE="VARCHAR2" LENGTH="20"
                   PRECISION="" PERSIST="Y" LEVEL="2" DEFAULT_VALUE="" PRIMARY_KEY="N"
                   VERSIONABLE="Y" FOREIGN_KEY="" PARENT_TABLE="" PARENT_COLUMN="">
              </field>
              <field NAME="detApplicantId" SOURCE_TABLE="UW_APPLICANT_DETAILS"
                   SOURCE_COLUMN="APPLICANT_ID" TYPE="NUMBER" LENGTH="20"
                   PRECISION="" PERSIST="Y" LEVEL="2" DEFAULT_VALUE="" PRIMARY_KEY="N"
                   VERSIONABLE="Y" FOREIGN_KEY="Y" PARENT_TABLE="UW_APPLICANT_MASTER" PARENT_COLUMN="APPLICANT_ID">
              </field>
              <field NAME="detApplicantDetailId" SOURCE_TABLE="UW_APPLICANT_DETAILS"
                   SOURCE_COLUMN="APPLICANT_DETAIL_ID" TYPE="NUMBER" LENGTH="20"
                   PRECISION="" PERSIST="Y" LEVEL="2" DEFAULT_VALUE="" PRIMARY_KEY="Y"
                   VERSIONABLE="Y" FOREIGN_KEY="" PARENT_TABLE="" PARENT_COLUMN="">
              </field>
              <field NAME="usResidentIndicator" SOURCE_TABLE="UW_APPLICANT_DETAILS"
                   SOURCE_COLUMN="US_RESIDENT_INDICATOR" TYPE="VARCHAR2" LENGTH="1"
                   PRECISION="" PERSIST="Y" LEVEL="2" DEFAULT_VALUE="" PRIMARY_KEY="N"
                   VERSIONABLE="Y" FOREIGN_KEY="" PARENT_TABLE="" PARENT_COLUMN="">
              </field>
              <field NAME="employeeNumber" SOURCE_TABLE="UW_APPLICANT_DETAILS"
                   SOURCE_COLUMN="EMPLOYEE_NUMBER" TYPE="VARCHAR2" LENGTH="20"
                   PRECISION="" PERSIST="Y" LEVEL="2" DEFAULT_VALUE="" PRIMARY_KEY="N"
                   VERSIONABLE="Y" FOREIGN_KEY="" PARENT_TABLE="" PARENT_COLUMN="">
              </field>
              <field NAME="isdefaulter" SOURCE_TABLE="UW_APPLICANT_DETAILS"
                   SOURCE_COLUMN="ISDEFAULTER" TYPE="VARCHAR2" LENGTH="20"
                   PRECISION="" PERSIST="Y" LEVEL="2" DEFAULT_VALUE="" PRIMARY_KEY="N"
                   VERSIONABLE="Y" FOREIGN_KEY="" PARENT_TABLE="" PARENT_COLUMN="">
              </field>
              </Object>
              <Object NAME="com.los.common.entity.ApplicantContact">
                   <field NAME="applicantId" SOURCE_TABLE="UW_APPLICANT_CONTACT_INFO"
                        SOURCE_COLUMN="APPLICANT_ID" TYPE="NUMBER" LENGTH="20"
                        PRECISION="" PERSIST="Y" LEVEL="1" DEFAULT_VALUE="" PRIMARY_KEY="N"
                        VERSIONABLE="Y" FOREIGN_KEY="Y" PARENT_TABLE="UW_APPLICANT_MASTER" PARENT_COLUMN="APPLICANT_ID">
                   </field>
                   <field NAME="contactId" SOURCE_TABLE="UW_APPLICANT_CONTACT_INFO"
                        SOURCE_COLUMN="CONTACT_ID" TYPE="NUMBER" LENGTH="20"
                        PRECISION="" PERSIST="Y" LEVEL="1" DEFAULT_VALUE="" PRIMARY_KEY="Y"
                        VERSIONABLE="Y" FOREIGN_KEY="" PARENT_TABLE="" PARENT_COLUMN="">
                   </field>
                   <field NAME="addressType" SOURCE_TABLE="UW_APPLICANT_CONTACT_INFO"
                        SOURCE_COLUMN="ADDRESS_TYPE" TYPE="VARCHAR2" LENGTH="20"
                        PRECISION="" PERSIST="Y" LEVEL="1" DEFAULT_VALUE="" PRIMARY_KEY="N"
                        VERSIONABLE="Y" FOREIGN_KEY="" PARENT_TABLE="" PARENT_COLUMN="">
                   </field>
                   <field NAME="applicantAddressLine1" SOURCE_TABLE="UW_APPLICANT_CONTACT_INFO"
                        SOURCE_COLUMN="APPLICANT_ADDRESS_LINE_1" TYPE="VARCHAR2" LENGTH="100"
                        PRECISION="" PERSIST="Y" LEVEL="1" DEFAULT_VALUE="" PRIMARY_KEY="N"
                        VERSIONABLE="Y" FOREIGN_KEY="" PARENT_TABLE="" PARENT_COLUMN="">
                   </field>
                   <field NAME="applicantAddressLine2" SOURCE_TABLE="UW_APPLICANT_CONTACT_INFO"
                        SOURCE_COLUMN="APPLICANT_ADDRESS_LINE_2" TYPE="VARCHAR2" LENGTH="100"
                        PRECISION="" PERSIST="Y" LEVEL="1" DEFAULT_VALUE="" PRIMARY_KEY="N"
                        VERSIONABLE="Y" FOREIGN_KEY="" PARENT_TABLE="" PARENT_COLUMN="">
                   </field>
                   <field NAME="applicantAddressLine3" SOURCE_TABLE="UW_APPLICANT_CONTACT_INFO"
                        SOURCE_COLUMN="APPLICANT_ADDRESS_LINE_3" TYPE="VARCHAR2" LENGTH="100"
                        PRECISION="" PERSIST="Y" LEVEL="1" DEFAULT_VALUE="" PRIMARY_KEY="N"
                        VERSIONABLE="Y" FOREIGN_KEY="" PARENT_TABLE="" PARENT_COLUMN="">
                   </field>
                   <field NAME="applicantAddressLine4" SOURCE_TABLE="UW_APPLICANT_CONTACT_INFO"
                        SOURCE_COLUMN="APPLICANT_ADDRESS_LINE_4" TYPE="VARCHAR2" LENGTH="100"
                        PRECISION="" PERSIST="Y" LEVEL="1" DEFAULT_VALUE="" PRIMARY_KEY="N"
                        VERSIONABLE="Y" FOREIGN_KEY="" PARENT_TABLE="" PARENT_COLUMN="">
                   </field>
                   <field NAME="residingSince" SOURCE_TABLE="UW_APPLICANT_CONTACT_INFO"
                        SOURCE_COLUMN="RESIDING_SINCE" TYPE="DATE" LENGTH=""
                        PRECISION="" PERSIST="Y" LEVEL="1" DEFAULT_VALUE="" PRIMARY_KEY="N"
                        VERSIONABLE="Y" FOREIGN_KEY="" PARENT_TABLE="" PARENT_COLUMN="">
                   </field>
                   <field NAME="residentialStatus" SOURCE_TABLE="UW_APPLICANT_CONTACT_INFO"
                        SOURCE_COLUMN="RESIDENTIAL_STATUS" TYPE="VARCHAR2" LENGTH="20"
                        PRECISION="" PERSIST="Y" LEVEL="1" DEFAULT_VALUE="" PRIMARY_KEY="N"
                        VERSIONABLE="Y" FOREIGN_KEY="" PARENT_TABLE="" PARENT_COLUMN="">
                   </field>
                   <field NAME="applicantEMa

    Could you please provide the stack trace?

  • Parse of a xml file to an java object model

    Hello,
    I'm trying to do a program that receive an xml file and ought to create all the neccesary java objects according to the content of the parsed xml file.
    I've all the class created for all the objects that could be present into the xml and the idea is to go down in the tree of nodes recursively until it returns nodes more simple. Then, I create the last object and while I come back of the recursively calls, I create the objects more complex until I reached to the main object.
    Until now, I have part of this code, that is the one wich have to parse the parts of the xml.
    public static void readFile(String root){
              DocumentBuilderFactory factory = DocumentBuilderFactory
                   .newInstance();
              try {
                   DocumentBuilder builder = factory.newDocumentBuilder();
                   Scanner scanner = new Scanner(new File(root)).useDelimiter("\\Z");
                   String contents = scanner.next();
                   scanner.close();
                   Document document = builder.parse(new ByteArrayInputStream(contents.getBytes()));
                   Node node = null;
                   NodeList nodes = null;
                   Element element = document.getDocumentElement();
                   System.out.println(element.getNodeName());
                   NodeList subNodes;
                   NamedNodeMap attributes;
                   //if (element.hasAttributes())
                   visitNodes(element);
              } catch (ParserConfigurationException e) {
                   e.printStackTrace();
              } catch (SAXException e) {
                   e.printStackTrace();
              } catch (IOException e) {
                   e.printStackTrace();
         private static void visitNodes (Node node){
              for(Node childNode = node.getFirstChild(); childNode!=null;){
                   if (childNode.getNodeType() == childNode.DOCUMENT_NODE){
                        System.out.println("Document node Name " + childNode.getNodeName());
                        visitNodes(childNode);
                   }else if (childNode.getNodeType() == childNode.ELEMENT_NODE){
                        System.out.println("Node Name " + childNode.getNodeName());
                        if (childNode.hasAttributes()){
                             visitAttributes(childNode.getAttributes());
                        if (childNode.hasChildNodes()){
                             visitNodes(childNode);
                   }else if (childNode.getNodeType() == childNode.TEXT_NODE && !childNode.getNodeValue().contains("\n\t")){
                        System.out.println("Node value " + childNode.getNodeValue());
                   Node nextChild = childNode.getNextSibling();
                   childNode = nextChild;
         private static void visitAttributes(NamedNodeMap attributes){
              Node node;
              for(int i = 0; i < attributes.getLength(); i++){
                   node = attributes.item(i);
                   System.out.print(node.getNodeName() + " ");
                   System.out.print(node.getNodeValue() + " ");
                  }I don't know the use of childNodeType. For example, I expected that the XML tags with childs in his structure, enter by the option NODE_DOCUMENT and the tags without childs by the ELEMENT_NODE.
    But the most important problem I've found are the nodes [#text] because after one ELEMENT_NODE I always found this node and when I ask if the node hasChilds, always returns true by this node.
    Has any option to obtain this text value, that finally I want to display without doing other recursively call when I enter into the ELEMENT_NODE option?
    When one Node is of type DOCUMENT_NODE or DOCUMENT_COMMENT? My program always enter by the ELEMENT_NODE type
    Have you any other suggestions? All the help or idea will be well received.
    Thanks for all.

    Hello again,
    My native language is Spanish and sorry by my English I attemp write as better I can, using my own knowledge and the google traductor.
    I have solved my initial problem with the xml parser.
    Firstly, I read the complete XML file, validated previously.
    The code I've used is this:
    public static String readCompleteFile (String root){
              String content = "";
              try {
                   Scanner scanner = new Scanner(new File(root)).useDelimiter("\\Z");
                   content = scanner.next();
                   scanner.close();
              } catch (IOException e) {
                   e.printStackTrace();
              return content;
         }Now, I've the file in memory and I hope I can explain me better.
    I can receive different types of XML that could be or not partly equals.
    For this purpose I've created an external jar library with all the possible objects contained in my xml files.
    Each one of this objects depend on other, until found leaf nodes.
    For example, If I receive one xml with a scheme like the next:
    <Person>
        <Name>Juliet</Name>
        <Father Age="30r">Peter</Father>
        <Mother age="29">Theresa</Mother>
        <Brother>
        </Brother>
        <Education>
            <School>
            </school>
        </education>
    </person>
    <person>
    </person>The first class, which initializes the parse, should selecting all the person tags into the file and treat them one by one. This means that for each person tag found, I must to call each subobject wich appears in the tag. using as parameter his own part of the tag and so on until you reach a node that has no more than values and or attributes. When the last node is completed I'm going to go back for completing the parent objects until I return to the original object. Then I'll have all the XML in java objects.
    The method that I must implement as constructor in every object is similar to this:
    public class Person{
      final String[] SUBOBJETOS = {"Father", "Mother", "Brothers", "Education"};
      private String name;
         private Father father;
         private Mother mother;
         private ArrayList brothers;
         private Education education;
         public Person(String xml){
           XmlUtil utilXml = new XmlUtil();          
              String xmlFather = utilXml.textBetweenXmlTags(xml, SUBOBJETOS[0]);
              String xmlMother = utilXml.textBetweenXmlTags(xml, SUBOBJETOS[1]);
              String xmlBrothers = utilXml.textBetweenMultipleXmlTags(xml, SUBOBJETOS[2]);
              String xmlEducation = utilXml.textBetweenXmlTags(xml, SUBOBJETOS[3]);
              if (!xmlFather.equals("")){
                   this.setFather(new Father(xmlFather));
              if (!xmlMother.equals("")){
                   this.setMother(new Father(xmlMother));
              if (!xmlBrothers.equals("")){
                ArrayList aux = new ArrayList();
                String xmlBrother;
                while xmlBrothers != null && !xmlBrothers.equals("")){
                  xmlBrother = utilXml.textBetweenXmlTags(xmlBrothers, SUBOBJETOS[2]);
                  aux.add(new Brother(xmlBrother);
                  xmlBrothers = utilXml.removeTagTreated(xmlBrothers, SUBOBJETOS[2]);
                this.setBrothers(aux);
              if (!xmlEducation.equals("")){
                   this.setEducation(new Father(xmlEducation));     
    }If the object is a leaf object, the constructor will be like this:
    public class Mother {
         //Elements
         private String name;
         private String age;
         public Mother(String xml){          
              XmlUtil utilXml = new XmlUtil();
              HashMap objects = utilXml.parsearString(xml);
              ArraysList objectsList = new ArrayList();
              String[] Object = new String[2];
              this.setName((String)objects.get("Mother"));
              if (objects.get("attributes")!= null){
                   objectsList = objects.get("attributes");
                   for (int i = 0; i < objectsList.size();i++){
                     Object = objectsList.get(i);
                     if (object[0].equals("age"))
                       this.setAge(object[1]);
                     else
         }Each class will have its getter and setter but I do not have implemented in the examples.
    Finally, the parser is as follows:
    import java.io.ByteArrayInputStream;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.HashMap;
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    import javax.xml.parsers.ParserConfigurationException;
    import org.w3c.dom.Document;
    import org.w3c.dom.NamedNodeMap;
    import org.w3c.dom.Node;
    import org.xml.sax.SAXException;
    public class XmlUtil {
         public HashMap parsearString(String contenido){
              HashMap objet = new HashMap();
              DocumentBuilderFactory factory;
              DocumentBuilder builder;
              Document document;
              try{
                   if (content != null && !content.equals("")){
                        factory = DocumentBuilderFactory.newInstance();
                        builder = factory.newDocumentBuilder();
                        document = builder.parse(new ByteArrayInputStream(content.getBytes()));
                        object = visitNodes(document);                    
                   }else{
                        object = null;
              } catch (ParserConfigurationException e) {
                   e.printStackTrace();
                   return null;
              } catch (SAXException e) {
                   e.printStackTrace();
                   return null;
              } catch (IOException e) {
                   e.printStackTrace();
                   return null;
              return object;
         private HashMap visitNodes (Node node){
              String nodeName = "";
              String nodeValue = "";
              ArrayList attributes = new ArrayList();
              HashMap object = new HashMap();
              Node childNode = node.getFirstChild();
              if (childNode.getNodeType() == Node.ELEMENT_NODE){
                   nodeName = childNode.getNodeName();                    
                   if (childNode.hasAttributes()){
                        attributes = visitAttributes(childNode.getAttributes());
                   }else{
                        attributes = null;
                   nodeValue = getNodeValue(childNode);
                   object.put(nodeName, nodeValue);
                   object.put("attributes", attributes);
              return object;
         private static String getNodeValue (Node node){          
              if (node.hasChildNodes() && node.getFirstChild().getNodeType() == Node.TEXT_NODE && !node.getFirstChild().getNodeValue().contains("\n\t"))
                   return node.getFirstChild().getNodeValue();
              else
                   return "";
         private ArrayList visitAttributes(NamedNodeMap attributes){
              Node node;
              ArrayList ListAttributes = new ArrayList();
              String [] attribute = new String[2];
              for(int i = 0; i < attributes.getLength(); i++){
                   atribute = new String[2];
                   node = attributes.item(i);
                   if (node.getNodeType() == Node.ATTRIBUTE_NODE){
                        attribute[0] = node.getNodeName();
                        attribute[1] = node.getNodeValue();
                        ListAttributes.add(attribute);
              return ListAttributes;
    }This code functioning properly. However, as exist around 400 objects to the xml, I wanted to create a method for more easily invoking objects that are below other and that's what I can't get to do at the moment.
    The code I use is:
    import java.lang.reflect.Constructor;
    import java.lang.reflect.InvocationTargetException;
    import java.lang.reflect.Method;
    public class UtilClasses {
         public Object UtilClasses(String package, String object, String xml){
              try {
                Class class = Class.forName(package + "." + object);
                //parameter types for methods
                Class[] partypes = new Class[]{Object.class};
                //Create method object . methodname and parameter types
                Method meth = class.getMethod(object, partypes);
                //parameter types for constructor
                Class[] constrpartypes = new Class[]{String.class};
                //Create constructor object . parameter types
                Constructor constr = claseObjeto.getConstructor(constrpartypes);
                //create instance
                Object obj = constr.newInstance(new String[]{xml});
                //Arguments to be passed into method
                Object[] arglist = new Object[]{xml};
                //invoke method!!
                String output = (String) meth.invoke(dummyto, arglist);
                System.out.println(output);
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            } catch (SecurityException e) {
                e.printStackTrace();
            } catch (NoSuchMethodException e) {
                e.printStackTrace();
            } catch (IllegalArgumentException e) {
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            } catch (InvocationTargetException e) {
                e.printStackTrace();
            } catch (InstantiationException e) {
                e.printStackTrace();
              return null;
         }This is an example obtained from the Internet that I've wanted modified to my needs. The problem is that when the class calls this method to invoke the constructor and does not fail, this does not do what I expect, because it creates an empty constructor. If not, the parent class gives a casting error.
    I hope that now have been more clear my intentions and that no one has fallen asleep reading this lengthy explanation.
    greetings.

  • How to parse XML to Java object... please help really stuck

    Thank you for reading this email...
    If I have a **DTD** like:
    <!ELEMENT person (name, age)>
    <!ATTLIST person
         id ID #REQUIRED
    >
    <!ELEMENT name ((family, given) | (given, family))>
    <!ELEMENT age (#PCDATA)>
    <!ELEMENT family (#PCDATA)>
    <!ELEMENT given (#PCDATA)>
    the **XML** like:
    <person id="a1">
    <name>
         <family> Yoshi </family>
         <given> Samurai </given>
    </name>
    <age> 21 </age>
    </person>
    **** Could you help me to write a simple parser to parse my DTD and XML to Java object, and how can I use those objects... sorry if the problem is too basic, I am a beginner and very stuck... I am very confuse with SAXParserFactory, SAXParser, ParserAdapter and DOM has its own Factory and Parser, so confuse...
    Thank you for your help, Yo

    Hi, Yo,
    Thank you very much for your help. And I Wish you are there...I'm. And I plan to stay - It's sunny and warm here in Honolulu and the waves are up :)
    A bit more question for dear people:
    In the notes, it's mainly focus on JAXB,
    1. Is that mean JAXB is most popular parser for
    parsing XML into Java object? With me, definitely. There are essentially 3 technologies that allow you to parse XML documents:
    1) "Callbacks" (e.g. SAX in JAXP): You write a class that overrides 3 methods that will be called i) whenever the parser encounters a start tag, ii) an end tag, or iii) PCDATA. Drawback: You have to figure out where the heck in the document hierarchy you are when such a callback happens, because the same method is called on EACH start tag and similarly for the end tag and the PCDATA. You have to create the objects and put them into your own data structure - it's very tedious, but you have complete control. (Well, more or less.)
    2) "Tree" (e.g. DOM in JAXP, or it's better cousin JDOM): You call a parser that in one swoop creates an entire hierarchy that corresponds to the XML document. You don't get called on each tag as with SAX, you just get the root of the resulting tree. Drawback: All the nodes in the tree have the same type! You probably want to know which tags are in the document, don't you? Well, you'll have to traverse the tree and ask each node: What tag do you represent? And what are your attributes? (You get only strings in response even though your attributes often represent numbers.) Unless you want to display the tree - that's a nice application, you can do it as a tree model for JTree -, or otherwise don't care about the individual tags, DOM is not of much help, because you have to keep track where in the tree you are while you traverse it.
    3) Enter JAXB (or Castor, or ...): You give it a grammar of the XML documents you want to parse, or "unmarshall" as the fashion dictates to call it. (Actually the name isn't that bad, because "parsing" focuses on the input text while "unmarshalling" focuses on the objects you get, even though I'd reason that it should be marshalling that converts into objects and unmarshalling that converts objects to something else, and not vice versa but that's just my opinion.) The JAXB compiler creates a bunch of source files each with one (or now more) class(es) (and now interfaces) that correspond to the elements/tags of your grammar. (Now "compiler" is a true jevel of a misnomer, try to explain to students that after they run the "compiler", they still need to compile the sources the "compiler" generated with the real Java compiler!). Ok, you've got these sources compiled. Now you call one single method, unmarshall() and as a result you get the root node of the hierarchy that corresponds to the XML document. Sounds like DOM, but it's much better - the objects in the resulting tree don't have all the same type, but their type depends on the tag they represent. E.g if there is the tag <ball-game> then there will be an object of type myPackage.BallGame in your data structure. It gets better, if there is <score> inside <ball-game> and you have an object ballGame (of type BallGame) that you can simply call ballGame.getScore() and you get an object of type myPackage.Score. In other words, the child tags become properties of the parent object. Even better, the attributes become properties, too, so as far as your program is concerned there is no difference whether the property value was originally a tag or an attribute. On top of that, you can tell in your schema that the property has an int value - or another primitive type (that's like that in 1.0, in the early release you'll have to do it in the additional xjs file). So this is a very natural way to explore the data structure of the XML document. Of course there are drawbacks, but they are minor: daunting complexity and, as a consequence, very steep learning curve, documentation that leaves much to reader's phantasy - read trial and error - (the user's guide is too simplicistic and the examples too primitive, e.g. they don't even tell you how to make a schema where a tag has only attributes) and reference manual that has ~200 pages full of technicalities and you have to look with magnifying glas for the really usefull stuff, huge number of generated classes, some of which you may not need at all (and in 1.0 the number has doubled because each class has an accompanying interface), etc., etc. But overall, all that pales compared to the drastically improved efficiency of the programmer's efforts, i.e. your time. The time you'll spend learning the intricacies is well spent, you'll learn it once and then it will shorten your programming time all the time you use it. It's like C and Java, Java is order of magnitude more complex, but you'd probably never be sorry you gave up C.
    Of course the above essay leaves out lots and lots of detail, but I think that it touches the most important points.
    A word about JAXB 1.0 vs. Early Release (EA) version. If you have time, definitively learn 1.0, they are quite different and the main advantage is that the schema combines all the info that you had to formulate in the DTD and in the xjs file when using the EA version. I suggested EA was because you had a DTD already, but in retrospect, you better start from scratch with 1.0. The concepts in 1.0 are here to stay and once your surmounted the learning curve, you'll be glad that you don't have to switch concepts.
    When parser job is done,
    what kind of Java Object we will get? (String,
    InputStream or ...)See above, typically it's an object whose type is defined as a class (and interface in 1.0) within the sources that JABX generates. Or it can be a String or one of the primitive types - you tell the "compiler" in the schema (xjs file in EA) what you want!
    2. If we want to use JAXB, we have to contain a
    XJS-file? Something like:In EA, yes. In 1.0 no - it's all in the schema.
    I am very new to XML, is there any simpler way to get
    around them? It has already take me 4 days to find a
    simple parser which give it XML and DTD, then return
    to me Java objects ... I mean if that kind of parser
    exists....It'll take you probably magnitude longer that that to get really familiar with JAXB, but believe me it's worth it. You'll save countless days if not weeks once you'll start developing serious software with it. How long did it take you to learn Java and it's main APIs? You'll either invest the time learning how to use the software others have written, or you invest it writing it yourself. I'll take the former any time. But it's only my opinion...
    Jan

  • Mapping XML object to java object gives ClassCastException

    Hi All,
    I am trying to map a specific XML object to a specific java object using web
    services and received the following exception:
    java.lang.ClassCastException: weblogic.soap.xml.XMLObject
    at $Proxy0.getMonster(Unknown Source)
    at serviceClient.TestServiceClient.main(TestServiceClient.java:46)
    Exception in thread "main"
    I tried to map a simple type:
    <types>
    <schema targetNamespace='java:biomaterials'
    xmlns='http://www.w3.org/1999/XMLSchema'>
    <element name="Monster">
    <complexType>
    <all>
    <element name="name"
    type="string"/>
    <element name="age"
    type="int"/>
    </all>
    </complexType>
    </element>
    </schema>
    </types>
    To the following java bean:
    package biomaterials;
    public class
    ster{
    private String name;
    private Integer age;
    public Monster(String name, int age) {
    this.name=name;
    this.age=new Integer(age);
    public String getName() {
    return name;
    public void setName(String s) {
    this.name=s;
    public Integer getAge() {
    return age;
    public void setAge(int n) {
    this.age=new Integer(n);
    Here is my client code:
    package serviceClient;
    import java.util.Properties;
    import weblogic.soap.codec.CodecFactory;
    import weblogic.soap.codec.SoapEncodingCodec;
    import weblog
    ic.soap.codec.LiteralCodec;
    import weblogic.soap.WebServiceProxy;
    import weblogic.soap.SoapMethod;
    import weblogic.soap.SoapType;
    import javax.naming.Context;
    import javax.naming.InitialContext;
    import javax.ejb.*;
    import biomaterials.ServiceSession;
    import java.io.File;
    import java.io.IOException;
    import org.w3c.dom.Element;
    import biomaterials.Monster;
    public class TestServiceClient
    public static void main( String[] arg ) throws Exception
    Properties h = new Properties();
    h.put(Context.INITIAL_CONTEXT_FACTORY,
    "weblogic.soap.http.SoapInitialContextFactory");
    h.put("weblogic.soap.wsdl.interface",
    ServiceSession.class.getName() );
    Context context = new InitialContext(h);
    ServiceSession serv =
    (ServiceSession)context.lookup("http://localhost:7001/biocat/biomaterials.Se
    rviceSession/biomaterials.ServiceSession.wsdl");
    //try
    //int result = serv.getTheNum();
    //String result=serv.getBIXBiologicals();
    //int result=serv.setBIXInfo("TARNUMBER");
    Monster result=serv.getMonster();
    System.out.print("The value is "+result);
    } /* end of main */
    } /* end of class */
    Here is the method in my stateless session bean:
    public Monster getMonster()
    return new Monster("Sully",3);
    And here is my whole wsdl file:
    <% response.setHeader( "Content-Type", "text/xml; charset=utf-8" ); %>
    <definitions
    targetNamespace="java:biomaterials"
    xmlns="http://schemas.xmlsoap.org/wsdl/"
    xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"
    xmlns:xsd="http://www.w3.org/1999/XMLSchema"
    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
    xmlns:tns="java:biomaterials"
    >
    <types>
    <schema targetNamespace='java:biomaterials'
    xmlns='http://www.w3.org/1999/XMLSchema'>
    <element name="Monster">
    <complexType>
    <all>
    <element name="name" type="string"/>
    <element name="age" type="int"/>
    </all>
    </complexType>
    </element>
    </schema>
    </types>
    <message name="getBIXBiologicalsRequest"></message>
    <message name="getBIXBiologicalsResponse">
    <part name="return" type="xsd:string" />
    </message>
    <message name="setBIXInfoRequest">
    <part name="arg0" type="xsd:string" />
    <part name="arg1" type="xsd:string" />
    <part name="arg2" type="xsd:integer" />
    </message>
    <message name="setBIXInfoResponse"></message>
    <message name="getMonsterRequest"></message>
    <message name="getMonsterResponse">
    <part name="body" element="tns:Monster"/>
    </message>
    <portType name="ServiceSessionPortType">
    <operation name="getBIXBiologicals">
    <input message="tns:getBIXBiologicalsRequest"/>
    <output message="tns:getBIXBiologicalsResponse"/>
    I am using weblogic 6.1 SP1 on WIN NT.
    Please help me out in this issue.
    Thanks in advance.
    Sapan

    HI !
    i dont think that the servicepack is an issue in this case.
    anyway i ahve tried it on 6.1SP4 and still getting similar results.
    any pointers will be highly appreciated.
    Thanks,
    sapan
    "manoj cheenath" <[email protected]> wrote in message
    news:[email protected]...
    I just skimmed through your email. You said you
    are using WLS 6.1 SP1. Can you try this using
    the latest SP. There are many bug fixes done
    after SP1.
    Web service support in 6.1 is very limited. But, It
    looks like 6.1 can handle the case you are trying out.
    regards,
    -manoj
    "Sapan Agarwal" <[email protected]> wrote in message
    news:[email protected]...
    Hi All,
    I am trying to map a specific XML object to a specific java object usingweb
    services and received the following exception:
    java.lang.ClassCastException: weblogic.soap.xml.XMLObject
    at $Proxy0.getMonster(Unknown Source)
    at
    serviceClient.TestServiceClient.main(TestServiceClient.java:46)
    >>
    Exception in thread "main"
    I tried to map a simple type:
    <types>
    <schema targetNamespace='java:biomaterials'
    xmlns='http://www.w3.org/1999/XMLSchema'>
    <element name="Monster">
    <complexType>
    <all>
    <element name="name"
    type="string"/>
    <element name="age"
    type="int"/>
    </all>
    </complexType>
    </element>
    </schema>
    </types>
    To the following java bean:
    package biomaterials;
    public class
    ster{
    private String name;
    private Integer age;
    public Monster(String name, int age) {
    this.name=name;
    this.age=new Integer(age);
    public String getName() {
    return name;
    public void setName(String s) {
    this.name=s;
    public Integer getAge() {
    return age;
    public void setAge(int n) {
    this.age=new Integer(n);
    Here is my client code:
    package serviceClient;
    import java.util.Properties;
    import weblogic.soap.codec.CodecFactory;
    import weblogic.soap.codec.SoapEncodingCodec;
    import weblog
    ic.soap.codec.LiteralCodec;
    import weblogic.soap.WebServiceProxy;
    import weblogic.soap.SoapMethod;
    import weblogic.soap.SoapType;
    import javax.naming.Context;
    import javax.naming.InitialContext;
    import javax.ejb.*;
    import biomaterials.ServiceSession;
    import java.io.File;
    import java.io.IOException;
    import org.w3c.dom.Element;
    import biomaterials.Monster;
    public class TestServiceClient
    public static void main( String[] arg ) throws Exception
    Properties h = new Properties();
    h.put(Context.INITIAL_CONTEXT_FACTORY,
    "weblogic.soap.http.SoapInitialContextFactory");
    h.put("weblogic.soap.wsdl.interface",
    ServiceSession.class.getName() );
    Context context = new InitialContext(h);
    ServiceSession serv =
    (ServiceSession)context.lookup("http://localhost:7001/biocat/biomaterials.Se
    rviceSession/biomaterials.ServiceSession.wsdl");
    file://try
    file://int result = serv.getTheNum();
    file://String result=serv.getBIXBiologicals();
    file://int result=serv.setBIXInfo("TARNUMBER");
    Monster result=serv.getMonster();
    System.out.print("The value is "+result);
    } /* end of main */
    } /* end of class */
    Here is the method in my stateless session bean:
    public Monster getMonster()
    return new Monster("Sully",3);
    And here is my whole wsdl file:
    <% response.setHeader( "Content-Type", "text/xml; charset=utf-8" ); %>
    <definitions
    targetNamespace="java:biomaterials"
    xmlns="http://schemas.xmlsoap.org/wsdl/"
    xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"
    xmlns:xsd="http://www.w3.org/1999/XMLSchema"
    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
    xmlns:tns="java:biomaterials"
    >
    <types>
    <schema targetNamespace='java:biomaterials'
    xmlns='http://www.w3.org/1999/XMLSchema'>
    <element name="Monster">
    <complexType>
    <all>
    <element name="name" type="string"/>
    <element name="age" type="int"/>
    </all>
    </complexType>
    </element>
    </schema>
    </types>
    <message name="getBIXBiologicalsRequest"></message>
    <message name="getBIXBiologicalsResponse">
    <part name="return" type="xsd:string" />
    </message>
    <message name="setBIXInfoRequest">
    <part name="arg0" type="xsd:string" />
    <part name="arg1" type="xsd:string" />
    <part name="arg2" type="xsd:integer" />
    </message>
    <message name="setBIXInfoResponse"></message>
    <message name="getMonsterRequest"></message>
    <message name="getMonsterResponse">
    <part name="body" element="tns:Monster"/>
    </message>
    <portType name="ServiceSessionPortType">
    <operation name="getBIXBiologicals">
    <input message="tns:getBIXBiologicalsRequest"/>
    <outputmessage="tns:getBIXBiologicalsResponse"/>
    >>
    >>
    >>
    >>
    >>
    >>
    >>
    I am using weblogic 6.1 SP1 on WIN NT.
    Please help me out in this issue.
    Thanks in advance.
    Sapan

  • Xml to java object

    Hi
    What is an easy way to generate an java object from xml
    Thanks very much

    Using DOM or JDOM (http://xml.apache.org/xerces-j/, http://www.jdom.org/)
    It is equaly as easy to create a dom or a jdom obj, but most java programmers find JDOM more intuative to work with.
    Hope this helps!

  • Design pattern for converting multiple complex Java objects to XML

    What is the traditionally accepted high performance mechanism for converting Java objects to XML? Some options I have explored are:
    1. SAX-JAXP
    2. DOM-JAXP
    3. JAXB
    4. Castor
    Which of these usually performs the best for large, complex objects which contain multiple subobjects?
    Thanks.

    Take a look at XStream. It will simplify your life considerably.
    Typical code snipped
    XStream xStream = new XStream();
    xStream.toXML(someJavaObject);That's it. Regarding the others...
    1. SAX-JAXP
    Can be used for XML -> Java Objects, but you have to write significant amounts of ugly, high maintainenance code
    2. DOM-JAXP
    Slower and more memory intensive than SAX because you need to read the whole object into memory first. Just as ugly and high maintenance.
    3. JAXB
    Actually very good for going from a POJO to XML, but rubbish in the opposite direction. The worst part is it adds an extra step to your build process as you need to tell it to generate and compile the source for doing this.
    4. Castor
    Not used it since JAXB came out. Works pretty much in the same way but also supports XML -> POJOs.

Maybe you are looking for

  • Adobe Acrobat 9 Standard upgrade to Adobe Acrobat XI Professional

    Adobe Acrobat 9 Standard upgrade to Adobe Acrobat XI Professional Hello, I bougth today an Adobe Acrobat 9 Standard for Windows German lizence in Germany. How can I do the upgrade to Adobe Acrobat XI Professional for Windows German. I do not want to

  • SIS structure not being generated during upgrade

    Hello, We are in the early phase of an upgrade project. Our custom SIS structures are failing with the update rules generation. Looks like the data element associated with the characteristic of the info structure is changed that is causing inconsiste

  • Reader 10.1.4 problems with download

    Hi All I have been trying to down load a newer version. The doc i am trying to get is written on a newer version of reader. The bank links me to the corect down load which i follow but i keep getting the same problem. A box pop up saying "File in use

  • Mac mini won't bootup

    I was proceeding with an update of our EFI Firmware to our 2nd Mac mini that our organization owns( the first Mac mini, I had no problem with the update) and when it went to restart the light goes on in the front panel and that's it. Nothing on the m

  • What is Best Practice: Array or typed List?

    Hello,<br /><br />I am just starting with BlazeDS and Flex.  I want to exchange a strongly typed collection between client and server.  I was wondering if it is better to use Java Arrays (MyClass[]) or typed lists List<MyClass><br /><br />What is the