XML data to objects/classes JAVA parsing (Data binding - JIBX)

XML file parsing using JIBX tool - XML Data binding to Objects

Some times we may require to parse a given XML file to populate the data in objects.
So here the only source we have is a sample XML file, nothing else not even a xsd file available.
Requirement description :
You are given just one sample XML file which needs to be parsed and populate the data from XML file to java class objects.
There is no XSD (XML schema definition) file available.
Sample XML file contents :

Solution :
 The solution I followed for this is using the jibx tool to reduce the code burden.
 JIBX is one of the best xml parsing tool for xml data binding.

So all we need to do; to use jibx tool we have to do the below mentioned 5 steps.
1. Analyze the sample.xml
2. write the binding.xml.
3. Write the classes identified.
4. Compile using build.xml.
5. Write main method to parse the xml file and show the data.

Analyze the sample.xml :
Read carefully and observe the pattern of data it contains.
Example below
<?xml version="1.0" encoding="UTF-8"?>
<results
        xmlns="urn:www-collation-com:1.0"
        xmlns:coll="urn:www-collation-com:1.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="urn:www-collation-com:1.0
              urn:www-collation-com:1.0/results.xsd">

    <ComputerSystem array="1" guid="0A59DB143A8B3B0F9385FE6A3E0BE095" xsi:type="coll:com.collation.platform.model.topology.sys.sun.SunSPARCUnitaryComputerSystem">
        <fqdn>islrpbssn03.in.ibm.com</fqdn>
        <type>ComputerSystem</type>
        <OSRunning guid="8B9EF833438F3F769DF1C6B6F8EB6704" xsi:type="coll:com.collation.platform.model.topology.sys.sun.Solaris">
            <OSConfidence>100</OSConfidence>
            <OSName>SunOS</OSName>
            <OSVersion>5.10</OSVersion>
            <OSMode>64-bit sparcv9 applications,    vis2 vis ,32-bit sparc applications,    vis2 vis v8plus div32 mul32</OSMode>
        </OSRunning>
        <ipInterfaces array="1"
            guid="B0DB02C0C1D03E248FCCF97D3744EFDF"
            lastModified="1270881893121"
            parent="0A59DB143A8B3B0F9385FE6A3E0BE095" xsi:type="coll:com.collation.platform.model.topology.net.IpInterface">
            <ipAddress guid="0188E1E8633E3F5C849E2454ED7F92A2" xsi:type="coll:com.collation.platform.model.topology.net.IpV4Address"/>
            <ipNetwork guid="3856A334B3D6306E9A2C5CEC97357808" xsi:type="coll:com.collation.platform.model.topology.net.IpV4Network"/>
            <l2Interface guid="1FF6C43DFD7A3D658939894CD2840FBB" xsi:type="coll:com.collation.platform.model.topology.net.L2Interface"/>
            <displayName>9.126.85.190</displayName>
            <bidiFlag>3</bidiFlag>
        </ipInterfaces>
        <ipInterfaces array="2"
            guid="4CE10626AD1F35879F2BFEFB911C0596"
            lastModified="1270881893058"
            parent="0A59DB143A8B3B0F9385FE6A3E0BE095" xsi:type="coll:com.collation.platform.model.topology.net.IpInterface">
            <ipAddress guid="A5B55BF06F4F3568B0A3A08566776E34" xsi:type="coll:com.collation.platform.model.topology.net.IpV4Address"/>
            <ipNetwork guid="91E4DC01B2B93F1C9733720535C3250A" xsi:type="coll:com.collation.platform.model.topology.net.IpV4Network"/>
            <l2Interface guid="C8538176AA8435568BAE99C81BDEFADE" xsi:type="coll:com.collation.platform.model.topology.net.L2Interface"/>
            <displayName>127.0.0.1</displayName>
            <bidiFlag>3</bidiFlag>
        </ipInterfaces>
    </ComputerSystem>


    <ComputerSystem array="2" guid="1AE1BAE9EA5F37E3891BA093962E80D2" xsi:type="coll:com.collation.platform.model.topology.sys.linux.LinuxUnitaryComputerSystem">
        <fqdn>islrpbeixn50.in.ibm.com</fqdn>
        <type>ComputerSystem</type>
        <OSRunning guid="70081092A0FB3F3CBF28A93850781F8B" xsi:type="coll:com.collation.platform.model.topology.sys.linux.Linux">
            <OSConfidence>100</OSConfidence>
            <OSName>Linux</OSName>
            <OSVersion>SUSE Linux Enterprise Server 10 (i586)</OSVersion>
            <OSMode>64-bit</OSMode>
        </OSRunning>
        <ipInterfaces array="1"
            guid="C1E26AF496CB3E6898D4C681E7D4890F"
            lastModified="1271145535996"
            parent="1AE1BAE9EA5F37E3891BA093962E80D2" xsi:type="coll:com.collation.platform.model.topology.net.IpInterface">
            <ipAddress guid="BBF92BDB2A9333B999AA5D1F3D2D7DB2" xsi:type="coll:com.collation.platform.model.topology.net.IpV6Address"/>
            <ipNetwork guid="91E4DC01B2B93F1C9733720535C3250A" xsi:type="coll:com.collation.platform.model.topology.net.IpV4Network"/>
            <l2Interface guid="29D627F80C0635BD9FAD32842E97EC4B" xsi:type="coll:com.collation.platform.model.topology.net.L2Interface"/>
            <displayName>0:0:0:0:0:0:0:1</displayName>
            <bidiFlag>3</bidiFlag>
        </ipInterfaces>
        <ipInterfaces array="2"
            guid="364EF12203853318BCAF2BE2DB279B67"
            lastModified="1271145535918"
            parent="1AE1BAE9EA5F37E3891BA093962E80D2" xsi:type="coll:com.collation.platform.model.topology.net.IpInterface">
            <ipAddress guid="A5B55BF06F4F3568B0A3A08566776E34" xsi:type="coll:com.collation.platform.model.topology.net.IpV4Address"/>
            <ipNetwork guid="91E4DC01B2B93F1C9733720535C3250A" xsi:type="coll:com.collation.platform.model.topology.net.IpV4Network"/>
            <l2Interface guid="29D627F80C0635BD9FAD32842E97EC4B" xsi:type="coll:com.collation.platform.model.topology.net.L2Interface"/>
            <displayName>127.0.0.1</displayName>
            <bidiFlag>3</bidiFlag>
        </ipInterfaces>
        <ipInterfaces array="3"
            guid="99FE67EE21B733D18D730D9EB9668D9C"
            lastModified="1271145535964"
            parent="1AE1BAE9EA5F37E3891BA093962E80D2" xsi:type="coll:com.collation.platform.model.topology.net.IpInterface">
            <ipAddress guid="8ABCC5879A4532DFAE9E8341D10F01B6" xsi:type="coll:com.collation.platform.model.topology.net.IpV6Address"/>
            <ipNetwork guid="91E4DC01B2B93F1C9733720535C3250A" xsi:type="coll:com.collation.platform.model.topology.net.IpV4Network"/>
            <l2Interface guid="802D599BA72A3C84A78B2123F0E6DBB2" xsi:type="coll:com.collation.platform.model.topology.net.L2Interface"/>
            <displayName>fe80:0:0:0:20e:cff:fe67:5433</displayName>
            <bidiFlag>3</bidiFlag>
        </ipInterfaces>
        <ipInterfaces array="4"
            guid="BA733238179833AD91D43E542B9F93CC"
            lastModified="1271145535980"
            parent="1AE1BAE9EA5F37E3891BA093962E80D2" xsi:type="coll:com.collation.platform.model.topology.net.IpInterface">
            <ipAddress guid="DB0FFF95E752314596831ACC9A0FC100" xsi:type="coll:com.collation.platform.model.topology.net.IpV4Address"/>
            <ipNetwork guid="91E4DC01B2B93F1C9733720535C3250A" xsi:type="coll:com.collation.platform.model.topology.net.IpV4Network"/>
            <l2Interface guid="802D599BA72A3C84A78B2123F0E6DBB2" xsi:type="coll:com.collation.platform.model.topology.net.L2Interface"/>
            <displayName>9.184.66.239</displayName>
            <bidiFlag>3</bidiFlag>
        </ipInterfaces>
    </ComputerSystem>


    <ComputerSystem array="3" guid="5DB5CC25116C39C484C69F4330FEFF86" xsi:type="coll:com.collation.platform.model.topology.sys.aix.AixUnitaryComputerSystem">
        <fqdn>islrpbixv06.in.ibm.com</fqdn>
        <type>ComputerSystem</type>
        <OSRunning guid="6CD3AF45BE603572ABF97B4B1D261D96" xsi:type="coll:com.collation.platform.model.topology.sys.aix.Aix">
            <OSConfidence>100</OSConfidence>
            <OSName>AIX</OSName>
            <OSVersion>5.3.0.0</OSVersion>
            <OSMode>64-bit</OSMode>
        </OSRunning>
        <ipInterfaces array="1"
            guid="E518A4B9197138D0AB7A5671A7897A77"
            lastModified="1270881954418"
            parent="5DB5CC25116C39C484C69F4330FEFF86" xsi:type="coll:com.collation.platform.model.topology.net.IpInterface">
            <ipAddress guid="A5B55BF06F4F3568B0A3A08566776E34" xsi:type="coll:com.collation.platform.model.topology.net.IpV4Address"/>
            <ipNetwork guid="91E4DC01B2B93F1C9733720535C3250A" xsi:type="coll:com.collation.platform.model.topology.net.IpV4Network"/>
            <l2Interface guid="2038D4670E123063A7668E8AB92761C2" xsi:type="coll:com.collation.platform.model.topology.net.L2Interface"/>
            <displayName>127.0.0.1</displayName>
            <bidiFlag>3</bidiFlag>
        </ipInterfaces>
        <ipInterfaces array="2"
            guid="ADDB51DDC2B73109ACD8374768D17BBE"
            lastModified="1270881954214"
            parent="5DB5CC25116C39C484C69F4330FEFF86" xsi:type="coll:com.collation.platform.model.topology.net.IpInterface">
            <ipAddress guid="1832ABD3CD2D31E586A8FA14542B5C44" xsi:type="coll:com.collation.platform.model.topology.net.IpV4Address"/>
            <ipNetwork guid="3FE22AF17C5F309CAB28E4C3FDBACB76" xsi:type="coll:com.collation.platform.model.topology.net.IpV4Network"/>
            <l2Interface guid="D8AC8F9F2A8433149A5CA169F466AAE4" xsi:type="coll:com.collation.platform.model.topology.net.L2Interface"/>
            <displayName>9.122.166.118</displayName>
            <bidiFlag>3</bidiFlag>
        </ipInterfaces>
        <ipInterfaces array="3"
            guid="529EED8B732333188CFD3490DA1922C5"
            lastModified="1270881953980"
            parent="5DB5CC25116C39C484C69F4330FEFF86" xsi:type="coll:com.collation.platform.model.topology.net.IpInterface">
            <ipAddress guid="BBF92BDB2A9333B999AA5D1F3D2D7DB2" xsi:type="coll:com.collation.platform.model.topology.net.IpV6Address"/>
            <ipNetwork guid="91E4DC01B2B93F1C9733720535C3250A" xsi:type="coll:com.collation.platform.model.topology.net.IpV4Network"/>
            <l2Interface guid="2038D4670E123063A7668E8AB92761C2" xsi:type="coll:com.collation.platform.model.topology.net.L2Interface"/>
            <displayName>0:0:0:0:0:0:0:1</displayName>
            <bidiFlag>3</bidiFlag>
        </ipInterfaces>
    </ComputerSystem>


    <ComputerSystem array="4" guid="6E4C78F0B9463420ADBC21A2658AA22A" xsi:type="coll:com.collation.platform.model.topology.sys.linux.LinuxUnitaryComputerSystem">
        <fqdn>rt4.in.ibm.com</fqdn>
        <type>ComputerSystem</type>
        <OSRunning guid="41693E27B5123A56B946B3DAA7153246" xsi:type="coll:com.collation.platform.model.topology.sys.linux.Linux">
            <OSConfidence>100</OSConfidence>
            <OSName>Linux</OSName>
            <OSVersion>Red Hat Enterprise Linux Server release 5.2 (Tikanga)</OSVersion>
            <OSMode>64-bit</OSMode>
        </OSRunning>
        <ipInterfaces array="1"
            guid="BD81B78B00F431F28E45B9903C673FE4"
            lastModified="1270881834871"
            parent="6E4C78F0B9463420ADBC21A2658AA22A" xsi:type="coll:com.collation.platform.model.topology.net.IpInterface">
            <ipAddress guid="A5B55BF06F4F3568B0A3A08566776E34" xsi:type="coll:com.collation.platform.model.topology.net.IpV4Address"/>
            <ipNetwork guid="91E4DC01B2B93F1C9733720535C3250A" xsi:type="coll:com.collation.platform.model.topology.net.IpV4Network"/>
            <l2Interface guid="18F19B1E5BCF33D8B294658B89623E3A" xsi:type="coll:com.collation.platform.model.topology.net.L2Interface"/>
            <displayName>127.0.0.1</displayName>
            <bidiFlag>3</bidiFlag>
        </ipInterfaces>
        <ipInterfaces array="2"
            guid="361035ED31F73386A96E01DB59CF2377"
            lastModified="1270881834761"
            parent="6E4C78F0B9463420ADBC21A2658AA22A" xsi:type="coll:com.collation.platform.model.topology.net.IpInterface">
            <ipAddress guid="D4B04242C8063DD0A15FC4FA539C2886" xsi:type="coll:com.collation.platform.model.topology.net.IpV4Address"/>
            <ipNetwork guid="C729C2ED74793124B410B3E08FC4F366" xsi:type="coll:com.collation.platform.model.topology.net.IpV4Network"/>
            <l2Interface guid="F9307994411B350DBCA8C2BD4C983BC8" xsi:type="coll:com.collation.platform.model.topology.net.L2Interface"/>
            <displayName>9.184.64.244</displayName>
            <bidiFlag>3</bidiFlag>
        </ipInterfaces>
        <ipInterfaces array="3"
            guid="618CE77DCA1630728FE9F975F5D92E34"
            lastModified="1270881834839"
            parent="6E4C78F0B9463420ADBC21A2658AA22A" xsi:type="coll:com.collation.platform.model.topology.net.IpInterface">
            <ipAddress guid="BBF92BDB2A9333B999AA5D1F3D2D7DB2" xsi:type="coll:com.collation.platform.model.topology.net.IpV6Address"/>
            <ipNetwork guid="91E4DC01B2B93F1C9733720535C3250A" xsi:type="coll:com.collation.platform.model.topology.net.IpV4Network"/>
            <l2Interface guid="18F19B1E5BCF33D8B294658B89623E3A" xsi:type="coll:com.collation.platform.model.topology.net.L2Interface"/>
            <displayName>0:0:0:0:0:0:0:1</displayName>
            <bidiFlag>3</bidiFlag>
        </ipInterfaces>
        <ipInterfaces array="4"
            guid="D0C5FD62F70D39D79517C5957A08C012"
            lastModified="1270881835058"
            parent="6E4C78F0B9463420ADBC21A2658AA22A" xsi:type="coll:com.collation.platform.model.topology.net.IpInterface">
            <ipAddress guid="D4E59986D65530F49E2882A857002FF3" xsi:type="coll:com.collation.platform.model.topology.net.IpV6Address"/>
            <ipNetwork guid="91E4DC01B2B93F1C9733720535C3250A" xsi:type="coll:com.collation.platform.model.topology.net.IpV4Network"/>
            <l2Interface guid="F9307994411B350DBCA8C2BD4C983BC8" xsi:type="coll:com.collation.platform.model.topology.net.L2Interface"/>
            <displayName>fe80:0:0:0:250:56ff:feac:255f</displayName>
            <bidiFlag>3</bidiFlag>
        </ipInterfaces>
    </ComputerSystem>


    <ComputerSystem array="5" guid="9AB5DEF9F5FD3DADA2616230B605A250" xsi:type="coll:com.collation.platform.model.topology.sys.linux.LinuxUnitaryComputerSystem">
        <fqdn>rt3.in.ibm.com</fqdn>
        <type>ComputerSystem</type>
        <OSRunning guid="C75FD5FBA18D31C0ADD033BB84254600" xsi:type="coll:com.collation.platform.model.topology.sys.linux.Linux">
            <OSConfidence>100</OSConfidence>
            <OSName>Linux</OSName>
            <OSVersion>Red Hat Enterprise Linux Server release 5.2 (Tikanga)</OSVersion>
            <OSMode>64-bit</OSMode>
        </OSRunning>
        <ipInterfaces array="1"
            guid="006D494967D035D4BE14AB9BA9B35535"
            lastModified="1270881877402"
            parent="9AB5DEF9F5FD3DADA2616230B605A250" xsi:type="coll:com.collation.platform.model.topology.net.IpInterface">
            <ipAddress guid="EDC5FDD18141344E8C38D0634DB3384E" xsi:type="coll:com.collation.platform.model.topology.net.IpV6Address"/>
            <ipNetwork guid="91E4DC01B2B93F1C9733720535C3250A" xsi:type="coll:com.collation.platform.model.topology.net.IpV4Network"/>
            <l2Interface guid="F739F58377043960813E3F1DFFEF9F79" xsi:type="coll:com.collation.platform.model.topology.net.L2Interface"/>
            <displayName>fe80:0:0:0:250:56ff:feac:3d65</displayName>
            <bidiFlag>3</bidiFlag>
        </ipInterfaces>
        <ipInterfaces array="2"
            guid="934DDB05B9873AE696C77F8AFE6E52A7"
            lastModified="1270881877668"
            parent="9AB5DEF9F5FD3DADA2616230B605A250" xsi:type="coll:com.collation.platform.model.topology.net.IpInterface">
            <ipAddress guid="BBF92BDB2A9333B999AA5D1F3D2D7DB2" xsi:type="coll:com.collation.platform.model.topology.net.IpV6Address"/>
            <ipNetwork guid="91E4DC01B2B93F1C9733720535C3250A" xsi:type="coll:com.collation.platform.model.topology.net.IpV4Network"/>
            <l2Interface guid="693C859D351830E1AE777C9025B500A6" xsi:type="coll:com.collation.platform.model.topology.net.L2Interface"/>
            <displayName>0:0:0:0:0:0:0:1</displayName>
            <bidiFlag>3</bidiFlag>
        </ipInterfaces>
        <ipInterfaces array="3"
            guid="7A0CAE72A3663716AB1232D870D80EDE"
            lastModified="1270881877589"
            parent="9AB5DEF9F5FD3DADA2616230B605A250" xsi:type="coll:com.collation.platform.model.topology.net.IpInterface">
            <ipAddress guid="A5B55BF06F4F3568B0A3A08566776E34" xsi:type="coll:com.collation.platform.model.topology.net.IpV4Address"/>
            <ipNetwork guid="91E4DC01B2B93F1C9733720535C3250A" xsi:type="coll:com.collation.platform.model.topology.net.IpV4Network"/>
            <l2Interface guid="693C859D351830E1AE777C9025B500A6" xsi:type="coll:com.collation.platform.model.topology.net.L2Interface"/>
            <displayName>127.0.0.1</displayName>
            <bidiFlag>3</bidiFlag>
        </ipInterfaces>
        <ipInterfaces array="4"
            guid="91CD76C8B641385B97EFA94772ABB624"
            lastModified="1270881877652"
            parent="9AB5DEF9F5FD3DADA2616230B605A250" xsi:type="coll:com.collation.platform.model.topology.net.IpInterface">
            <ipAddress guid="5F42ACC1D9363EB6920C240A4FC1ACE2" xsi:type="coll:com.collation.platform.model.topology.net.IpV4Address"/>
            <ipNetwork guid="C729C2ED74793124B410B3E08FC4F366" xsi:type="coll:com.collation.platform.model.topology.net.IpV4Network"/>
            <l2Interface guid="F739F58377043960813E3F1DFFEF9F79" xsi:type="coll:com.collation.platform.model.topology.net.L2Interface"/>
            <displayName>9.184.64.243</displayName>
            <bidiFlag>3</bidiFlag>
        </ipInterfaces>
    </ComputerSystem>
</results>


binding.xml :
Create binding.xml file by analyzing the given xml file is the crucial part of this solution.
The documentation provided will help in writing binding.xml file for your requirement. see below binding.xml for the above sample.xml. If at all we have xsd file as well it would be easy to write the binding.xml. And we can understand the ways of writing this binding.xml by looking at most possible examples explained in jibx site.

<binding>
    <mapping name="results" class="com.ibm.xmlbind.Results">
        <collection field="computerSystems"
            item-type="com.ibm.xmlbind.ComputerSystem" />
    </mapping>
    <mapping name="ComputerSystem"
        class="com.ibm.xmlbind.ComputerSystem">
        <value name="fqdn" field="fqdn" />
        <value name="type" field="type" />
        <value name="guid" style="attribute" field="guid" />
        <structure name="OSRunning" field="osRunning" usage="optional">
            <value name="OSConfidence" field="osConfidence" usage="optional"/>
            <value name="OSName" field="osName" usage="optional"/>
            <value name="OSVersion" field="osVersion" usage="optional"/>
            <value name="OSMode" field="osMode" usage="optional"/>
        </structure>
        <collection field="ipInterfaces"
            item-type="com.ibm.xmlbind.IPInterfaces" />
    </mapping>
    <mapping name="ipInterfaces" class="com.ibm.xmlbind.IPInterfaces">
        <value name="ipAddress" field="ipAddress" usage="optional"/>
        <value name="ipNetwork" field="ipNetwork" usage="optional"/>
        <value name="l2Interface" field="l2Interface" usage="optional"/>
        <value name="displayName" field="displayName" usage="optional"/>
        <value name="bidiFlag" field="bidiFlag" usage="optional"/>
    </mapping>
</binding>

Creating the classes :
By closely observing the xml file we have to write the classes and their setter and getter methods.
See the classes identified for the above sample.xml below ...

ComputerSystems.java :
package com.ibm.xmlbind;

import java.util.ArrayList;

public class ComputerSystem {

    private String fqdn;

    private String type;

    private String guid;

    private OSRunning osRunning;

    private ArrayList ipInterfaces;

    public String getFqdn() {
        return fqdn;
    }

    public void setFqdn(String fqdn) {
        this.fqdn = fqdn;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public OSRunning getOsRunning() {
        return osRunning;
    }

    public void setOsRunning(OSRunning osRunning) {
        this.osRunning = osRunning;
    }

    public ArrayList getIpInterfaces() {
        return ipInterfaces;
    }

    public void setIpInterfaces(ArrayList ipInterfaces) {
        this.ipInterfaces = ipInterfaces;
    }

    public String getGuid() {
        return guid;
    }

    public void setGuid(String guid) {
        this.guid = guid;
    }

}
IPinterfaces.java:
package com.ibm.xmlbind;

public class IPInterfaces {

    private String ipAddress;

    private String ipNetwork;

    private String l2Interface;

    private String displayName;

    private String bidiFlag;

    public String getBidiFlag() {
        return bidiFlag;
    }

    public void setBidiFlag(String bidiFlag) {
        this.bidiFlag = bidiFlag;
    }

    public String getDisplayName() {
        return displayName;
    }

    public void setDisplayName(String displayName) {
        this.displayName = displayName;
    }

    public String getIpAddress() {
        return ipAddress;
    }

    public void setIpAddress(String ipAddress) {
        this.ipAddress = ipAddress;
    }

    public String getL2Interface() {
        return l2Interface;
    }

    public void setL2Interface(String interface1) {
        l2Interface = interface1;
    }

    public String getIpNetwork() {
        return ipNetwork;
    }

    public void setIpNetwork(String ipNetwork) {
        this.ipNetwork = ipNetwork;
    }

}
OSRunning.java:
package com.ibm.xmlbind;

public class OSRunning {
    private String osConfidence;

    private String osName;

    private String osVersion;
   
    private String osMode;

    public String getOsMode() {
        return osMode;
    }

    public void setOsMode(String osMode) {
        this.osMode = osMode;
    }

    public String getOsConfidence() {
        return osConfidence;
    }

    public void setOsConfidence(String osConfidence) {
        this.osConfidence = osConfidence;
    }

    public String getOsName() {
        return osName;
    }

    public void setOsName(String osName) {
        this.osName = osName;
    }

    public String getOsVersion() {
        return osVersion;
    }

    public void setOsVersion(String osVersion) {
        this.osVersion = osVersion;
    }

    @Override
    public String toString() {
        return "OSConfidence : " + osConfidence + " -- " +
        "OSName : " + osName + " -- " +
        "OSVersion : " + osVersion + " -- " +
        "OSMode : " + osMode;       
    }
   
   

}
Results.java :
package com.ibm.xmlbind;

import java.util.ArrayList;

public class Results {
   
    private ArrayList computerSystems;

    public ArrayList getComputerSystems() {
        return computerSystems;
    }

    public void setComputerSystems(ArrayList computerSystems) {
        this.computerSystems = computerSystems;
    }
   
   
}

Compiling :
once binding.xml and the classes are ready it is required to compile those to map the classes and XML tags.
For compiling this we can use the sample build.xml shown below.
build.xml :
<?xml version="1.0"?>
<project name="xmlbind" default="compile" basedir="..">
    <property name="root-dir" value="${basedir}/Build" />
    <property name="lib" value="${root-dir}/lib" />
    <property name="binding-file" value="${basedir}/binding.xml" />
    <target name="setclasspath">
        <path id="bindpath">
            <pathelement location="${root-dir}" />
            <pathelement location="${basedir}/bin" />
            <pathelement location="${lib}/jibx-bind.jar" />
            <pathelement location="${lib}/bcel.jar" />
            <pathelement location="${basedir}/lib/jibx-run.jar" />
            <pathelement location="${basedir}/lib/xpp3.jar" />
        </path>
    </target>
    <!-- Delete class files for a single example -->
    <target name="clean">
        <delete quiet="true">
            <fileset dir="${basedir}/bin" includes="**/JiBX_*.class" />
        </delete>
    </target>

    <!-- Create Binding classes -->
    <target name="compile" depends="clean,setclasspath">
        <java classname="org.jibx.binding.Compile" fork="yes" dir="${root-dir}" failonerror="true">
            <classpath refid="bindpath" />
            <arg value="${binding-file}" />
        </java>
    </target>
    <!-- Generate classes and binding.xml for given xsd file -->
    <target name="run-bind" depends="setclasspath">
        <java classname="" fork="yes" dir="${root-dir}" failonerror="true">
            <classpath refid="bindpath" />
            <arg value="${binding-file}" />
        </java>
    </target>
</project>


 
Main methods to parse XML file:
The below sample code parses the given XML file and prints the data in the objects.
package com.ibm.test;

import java.io.FileInputStream;

import org.jibx.runtime.*;

import com.ibm.util.Utils;
import com.ibm.xmlbind.*;

public class BindTest {
    public static void main(String[] args) throws Exception {
        IBindingFactory bfact = BindingDirectory.getFactory(Results.class);
        IUnmarshallingContext uctx = bfact.createUnmarshallingContext();
        Results obj = (Results) uctx.unmarshalDocument(new FileInputStream(
                Utils.removeXMLNamespaces("sample.xml")), null);
        for (int i = 0; i < obj.getComputerSystems().size(); i++) {           
            System.out.println("ComputerSystem : " + (i+1));
            System.out.println("--------------------------------------------");
            print((ComputerSystem) obj.getComputerSystems().get(i));
        }
        }
       
   
    private static void print(ComputerSystem sys) {
        System.out.println("  GUID of this Computer system: " + sys.getGuid());
        System.out.println("  fqdn : " + sys.getFqdn());
        System.out.println("  type : " + sys.getFqdn());
        System.out.println("  OSRunning : " + sys.getOsRunning());
       
    }
}
Folder structure in the Eclipse workspace:


0 comments to "XML data to objects/classes JAVA parsing (Data binding - JIBX)"

Post a Comment

Whoever writes Inappropriate/Vulgar comments to context, generally want to be anonymous …So I hope U r not the one like that?
For lazy logs, u can at least use Name/URL option which doesn’t even require any sign-in, The good thing is that it can accept your lovely nick name also and the URL is not mandatory too.
Thanks for your patience
~Krishna(I love "Transparency")

Popular Posts

Enter your email address:

Buffs ...

Tags


Powered by WidgetsForFree