Sudarshan kumar
Sudarshan kumar

Reputation: 1585

How to parse complex nested xml file in JAVA

i am new to xml parsing not able to decide how to parse this complex xml file in java . I am able to parse simple xml file but when when it comes to complex xml file i am confused .Not able to read elements of xml using java . Here is my sample xml file .

<?xml version="1.0"?>
<env:ContentEnvelope xsi:schemaLocation="http://fundamental.schemas.financial.jso.com/Fundamental/2011-07-07/ 
https://theshare.jso.com/sites/TRM-IA/Content%20Marketplace/Strategic%20Data%20Interfaces/SDI%20Schemas/Schemas/Fundamentals/2015-09-25/FundamentalMaster.xsd"
    xmlns:esg="http://fundamental.schemas.financial.jso.com/ESGSupportingInfo/2011-07-07/"
    xmlns:md="http://data.schemas.financial.jso.com/metadata/2010-10-10/"
    xmlns:cr="http://fundamental.schemas.financial.jso.com/CoraxData/2012-10-25/"
    xmlns:ful="http://fundamental.schemas.financial.jso.com/FundamentalLineItem/2011-07-07/"
    xmlns:fun="http://fundamental.schemas.financial.jso.com/Fundamental/2011-07-07/"
    xmlns:ir="http://fundamental.schemas.financial.jso.com/FinancialInstrumentRelationship/2011-07-07/"
    xmlns:fl="http://fundamental.schemas.financial.jso.com/FinancialLineItem/2011-07-07/"
    xmlns:pe="http://fundamental.schemas.financial.jso.com/FinancialPeriod/2011-07-07/"
    xmlns:seg="http://fundamental.schemas.financial.jso.com/FinancialSegment/2011-07-07/"
    xmlns:sr="http://fundamental.schemas.financial.jso.com/FinancialSource/2011-07-07/"
    xmlns:sli="http://fundamental.schemas.financial.jso.com/StandardizedLineItem/2011-07-07/"
    xmlns:ss="http://fundamental.schemas.financial.jso.com/StandardizedStatement/2011-07-07/"
    xmlns:fs="http://fundamental.schemas.financial.jso.com/FinancialStatement/2011-07-07/"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:env="http://data.schemas.tfn.jso.com/Envelope/2008-05-01/" minVers="1.0" majVers="3" pubStyle="Message">
    <env:Header>
        <env:Info>
            <env:Id>urn:uuid:069527ab-2c10-48bb-b3d2-206f4e66e5d2</env:Id>
            <env:TimeStamp>2016-12-23T10:09:09+00:00</env:TimeStamp>
        </env:Info>
        <fun:OrgId>20240</fun:OrgId>
        <fun:PartitionId>1</fun:PartitionId>
    </env:Header>
    <env:Body minVers="0.0" majVers="1" contentSet="Fundamental">
        <env:ContentItem action="Insert">
            <env:Data xsi:type="fun:FundamentalDataItem">
                <fun:Fundamental effectiveTo="9999-12-31T00:00:00+00:00" effectiveFrom="2013-06-29T00:55:15.313+00:00" uniqueFuamentalSet="0054341342">
                    <fun:OrganizationId objectType="Organization" objectTypeId="404510">42565596</fun:OrganizationId>
                    <fun:PrimaryReportingEntityCode>A4C67</fun:PrimaryReportingEntityCode>
                    <fun:TotalPrimaryReportingShares>567923000.00000</fun:TotalPrimaryReportingShares>
                    <fun:LocalLanguageId>505074</fun:LocalLanguageId>
                    <fun:IndustryGroups>
                        <fun:IndustryGroup validTo="9999-12-31T00:00:00+00:00" validFrom="1900-01-01T00:00:00+00:00">
                            <fun:GroupCode>BNK</fun:GroupCode>
                            <fun:GroupName languageId="505074">Bank</fun:GroupName>
                            <fun:TaxonomyId>1</fun:TaxonomyId>
                            <fun:IndustryGroupCodeId>3011649</fun:IndustryGroupCodeId>
                        </fun:IndustryGroup>
                    </fun:IndustryGroups>
                    <fun:GaapCode>CAG</fun:GaapCode>
                    <fun:ConsolidationBasis>Consolidated</fun:ConsolidationBasis>
                    <fun:IsFiling>true</fun:IsFiling>
                    <fun:ConsolidationBasisId>3013598</fun:ConsolidationBasisId>
                    <fun:GaapCodeId>3011536</fun:GaapCodeId>
                    <fun:Taxonomies>
                        <fun:Taxonomy>1</fun:Taxonomy>
                    </fun:Taxonomies>
                    <fun:WorldScopeIds>
                        <fun:WorldScopeId validTo="9999-12-31T00:00:00+00:00" validFrom="2012-03-31T00:00:00+00:00">C12436390</fun:WorldScopeId>
                    </fun:WorldScopeIds>
                </fun:Fundamental>
            </env:Data>
        </env:ContentItem>

Upvotes: 0

Views: 933

Answers (1)

Dark Knight
Dark Knight

Reputation: 8337

Definitely JAXB will help you here. Since you are dealing with complex xml files, i would suggest below approach( i agree it's lengthy and manual but shall work fine).

1) Generate xsd schema out of given xml content

2) Create a JAXB project in eclipse and create and empty XSD file and write it with xsd schema generated above

3) To convert .xsd file to pojo Right click on .xsd file and generate JAXB classes

4) Now write a code to un-marshal the data and run it, this should give you a corresponding java class.

Upvotes: 4

Related Questions