2017-01-12 18 views
0

xml parsingの初心者で、この複雑なxmlファイルをjavaで解析する方法を決定できません。 私は単純なXMLファイルを解析することができますが、複雑なXMLファイルになると混乱します.xmlの要素をjavaで読み取ることはできません。 ここに私のサンプルXMLファイルがあります。Javaで複雑なネストされた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> 
+1

あなたはデータを解析したいとは言っていますが、その理由は言いません。あなたは実際にデータで何をしたいですか? XMLの構文解析(用語の技術的意味では)は簡単ではありませんが、すべての複雑さを生成するのは解析後のデータの処理です。 –

答えて

3

確かにJAXBがお手伝いします。 あなたは複雑なXMLファイルを扱っているので、私は以下のアプローチを提案します(私はそれが長いとマニュアルだと同意しますが、うまくいくはずです)。

1)指定されたXMLコンテンツのうち、XSDスキーマを生成するには、

2)EclipseでのJAXBプロジェクトを作成し、作成し、空のXSDファイルとの.xsd変換するに

3の上に生成されたXSDスキーマ)とそれを書きますfile to pojo .xsdファイルを右クリックし、JAXBクラスを生成します。

4)データを非整列化して実行するコードを作成します。これにより、対応するJavaクラスが得られます。

+0

まっすぐ、間違いなく。 – Mordechai

+0

私はあなたのメソッドに基づいて試してみるつもりです。しかし、すでにxsdがxmlファイルに記述されているので動作しませんか? – SUDARSHAN

+0

.xsdファイルをお持ちの場合は、 –

関連する問題