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