2017-01-12 8 views
0

Я новичок в разборе xml, который не может решить, как разобрать этот сложный XML-файл в java. Я могу разобрать простой XML-файл, но когда дело доходит до сложного xml-файла, я запутался. Невозможно прочитать элементы xml с помощью java. Вот мой пример xml-файла.Как разобрать сложный вложенный XML-файл в JAVA

<?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) Создание XSD схемы из данного содержания XML

2) Создать JAXB проект в затмении и создавать и пустой файл XSD и записать его с помощью XSD схемы генерируемой выше

3) Для того, чтобы преобразовать .xsd file to pojo Щелкните правой кнопкой мыши на .xsd-файле и сгенерируйте классы JAXB

4) Теперь напишите код, чтобы отменить маркер и запустить его, это должно дать вам соответствующий класс java.

+0

Простой, определенно. – Mordechai

+0

Я собираюсь попробовать на основе вашего метода. Но уже есть xsd, упомянутый в файле xml, который не работает? – SUDARSHAN

+0

Если у вас есть .xsd-файл, вы можете начать с него –

 Смежные вопросы

  • Нет связанных вопросов^_^