簡體   English   中英

如何在JAVA中解析復雜的嵌套xml文件

[英]How to parse complex nested xml file in JAVA

我是xml解析的新手,無法決定如何在java中解析此復雜的xml文件。 我能夠解析簡單的xml文件,但是當涉及復雜的xml文件時,我很困惑。無法使用java讀取xml的元素。 這是我的示例xml文件。

<?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>

絕對JAXB將在這里為您提供幫助。 由於您正在處理復雜的xml文件,因此我建議采用以下方法(我同意這既冗長又手動,但可以正常工作)。

1)根據給定的xml內容生成xsd模式

2)在eclipse中創建一個JAXB項目,創建並清空XSD文件,並使用上面生成的xsd模式進行寫入

3)將.xsd文件轉換為pojo右鍵單擊.xsd文件並生成JAXB類

4)現在編寫一個代碼來解組​​數據並運行它,這應該為您提供一個對應的Java類。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM