Saturday, February 15, 2014

How to extract values from XML file using Java code

This code below is to collect information from XML file in an easy and straight forward mode.


1)First your skeleton class:
package com.thiagoleoncio.trial.properties;

public class PropertySkeleton {
   private String propertytype;
   private String propertyname;
   private String propertysuffix;
 
   public PropertySkeleton(String propertyname, String propertytype,String propertysuffix){
    this.propertyname = propertyname;
       this.propertytype = propertytype;
       this.propertysuffix = propertysuffix;
   }
 
//getters & setters...
}



2)The method on you related class:
...
@Override
public List<PropertySkeleton> loadPropertiesType() {
try {

System.out.println("======================================================================="); 
          System.out.println("[INFO] Assume the solution will need to scale to about 100 properties.");
          System.out.println("=======================================================================");
            DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
            DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
            Document doc = docBuilder.parse (new File("src/config/loadseveralprop.xml"));
linkedList = new LinkedList<PropertySkeleton>();
            
            // normalize text representation
            doc.getDocumentElement ().normalize ();
            System.out.println("======================================================================="); 
          System.out.println("[INFO] Root element of the property doc is " +doc.getDocumentElement().getNodeName());
          System.out.println("=======================================================================");

            NodeList listOfPersons = doc.getElementsByTagName("property");
            int totalProperties = listOfPersons.getLength();
            System.out.println("[INFO] Total no of properties : " + totalProperties);
            String propertyName,propertyType,propertySuffix;
            for(int s=0; s<listOfPersons.getLength() ; s++){


                Node firstPersonNode = listOfPersons.item(s);
                if(firstPersonNode.getNodeType() == Node.ELEMENT_NODE){


                    Element firstPropElement = (Element)firstPersonNode;

                    //-------
                    NodeList propertyNameList = firstPropElement.getElementsByTagName("propertyname");
                    Element propertyNameElement = (Element)propertyNameList.item(0);

                    NodeList textFNList = propertyNameElement.getChildNodes();
                    System.out.println("Property Name : " + 
                           ((Node)textFNList.item(0)).getNodeValue().trim());
                    propertyName=((Node)textFNList.item(0)).getNodeValue().trim();

                    //-------
                    NodeList propertyTypeList = firstPropElement.getElementsByTagName("propertytype");
                    Element propertyTypeElement = (Element)propertyTypeList.item(0);

                    NodeList textLNList = propertyTypeElement.getChildNodes();
                    System.out.println("Property Type : " + 
                           ((Node)textLNList.item(0)).getNodeValue().trim());
                    propertyType=((Node)textLNList.item(0)).getNodeValue().trim();

                    //----
                    NodeList propertySuffixList = firstPropElement.getElementsByTagName("propertysuffix");
                    Element propertySuffixElement = (Element)propertySuffixList.item(0);

                    NodeList textAgeList = propertySuffixElement.getChildNodes();
                    System.out.println("Property Suffix : " + 
                           ((Node)textAgeList.item(0)).getNodeValue().trim());
                    propertySuffix=((Node)textAgeList.item(0)).getNodeValue().trim();
                    
                    //Loading all property details from the beggining, as requested.
                    linkedList.add(new PropertySkeleton(propertyName,propertyType,propertySuffix)); 

                }//end of if clause
            }//end of for loop with s var

        }catch (SAXParseException err) {
        System.out.println ("** Parsing error" + ", line " + err.getLineNumber () + ", uri " + err.getSystemId ());
        System.out.println(" " + err.getMessage ());

        }catch (SAXException e) {
        Exception x = e.getException ();
        ((x == null) ? e : x).printStackTrace ();

        }catch (Throwable t) {
        t.printStackTrace ();
        }
      System.out.println("[INFO] END the need to scale to about 100 properties.");
     
return linkedList;
}



3) Static Void Main method
....
   public static void main(String[] args) throws URISyntaxException, IOException {

        // invoke the property parser and print out properties alphabetically
        AppPropertiesManager m = new TrialAppPropertiesManager();;
        System.out.println(m.loadPropertiesType());     
    }
...


4) Xml File(called src/config/loadseveralprop.xml):
<Scallingoutproperties>
<property>
 <propertyname>JSON</propertyname>
 <propertytype>config.json</propertytype>
 <propertysuffix>.json</propertysuffix>
</property>
<property>
 <propertyname>AWS</propertyname>
 <propertytype>aws.properties</propertytype>
 <propertysuffix>.properties</propertysuffix>
</property>
<property>
 <propertyname>JDBC</propertyname>
 <propertytype>jdbc.properties</propertytype>
 <propertysuffix>.properties</propertysuffix>
</property>


Happy coding,
Thiago Leoncio.

No comments:

Post a Comment