2017-01-12 11 views
2

У меня есть xml-файл с ссылкой xsd. Справочник xsd также имеет много ссылок xsd.Как сгенерировать объект класса Java из Master XSD, который имеет ссылку xsd в java

Мой вопрос заключается в том, как преобразовать xsd в классы java, который имеет много ссылок xsd.

Должен ли я предоставить все упоминаемые xsd в том же месте?

Вот моя XSD структура:

<?xml version="1.0" encoding="UTF-8"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:env="http://data.schemas.tfn.fsr.com/Envelope/2008-05-01/" xmlns="http://fsr.com/Fundamental/2011-07-07/" xmlns:sou="http://fsr.com/FinancialSource/2011-07-07/" xmlns:pe="http://fsr.com/FinancialPeriod/2011-07-07/" xmlns:fs="http://fsr.com/FinancialStatement/2011-07-07/" xmlns:ir="http://fsr.com/FinancialInstrumentRelationship/2011-07-07/" xmlns:fl="http://fsr.com/FinancialLineItem/2011-07-07/" xmlns:seg="http://fsr.com/FinancialSegment/2011-07-07/" xmlns:sli="http://fsr.com/StandardizedLineItem/2011-07-07/" xmlns:ss="http://fsr.com/StandardizedStatement/2011-07-07/" xmlns:ful="http://fsr.com/FundamentalLineItem/2011-07-07/" xmlns:esg="http://fsr.com/ESGSupportingInfo/2011-07-07/" xmlns:cor="http://fsr.com/CoraxData/2012-10-25/" xmlns:al="http://fsr.com/FundamentalAnalytics/2011-07-07/" xmlns:md="http://data.schemas.financial.fsr.com/metadata/2010-10-10/" targetNamespace="http://fsr.com/Fundamental/2011-07-07/" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.0.0"> 
    <xs:import namespace="http://data.schemas.tfn.fsr.com/Envelope/2008-05-01/" schemaLocation="../../Envelope/2008-05-01/ContentEnvelope.xsd"/> 
    <xs:include schemaLocation="FundamentalDataItem.xsd"/> 
    <xs:import namespace="http://fsr.com/FinancialSource/2011-07-07/" schemaLocation="FinancialSource.xsd"/> 
    <xs:import namespace="http://fsr.com/FinancialPeriod/2011-07-07/" schemaLocation="FinancialPeriod.xsd"/> 
    <xs:import namespace="http://fsr.com/FinancialStatement/2011-07-07/" schemaLocation="FinancialStatement.xsd"/> 
    <xs:import namespace="http://fsr.com/FinancialInstrumentRelationship/2011-07-07/" schemaLocation="FundamentalInstrument.xsd"/> 
    <xs:import namespace="http://fsr.com/FinancialLineItem/2011-07-07/" schemaLocation="FinancialLineItem.xsd"/> 
    <xs:import namespace="http://fsr.com/FinancialSegment/2011-07-07/" schemaLocation="FinancialSegment.xsd"/> 
    <!--<xs:import namespace="http://fsr.com/StandardizedLineItem/2011-07-07/" schemaLocation="StandardizedLineItem.xsd"/>--> 
    <xs:import namespace="http://fsr.com/StandardizedStatement/2011-07-07/" schemaLocation="StandardizedStatement.xsd"/> 
    <!--xs:import namespace="http://fsr.com/FundamentalLineItem/2011-07-07/" schemaLocation="FundamentalLineItem.xsd"/--> 
    <xs:import namespace="http://fsr.com/CoraxData/2012-10-25/" schemaLocation="TRFCorax.xsd"/> 
    <xs:import namespace="http://fsr.com/FundamentalAnalytics/2011-07-07/" schemaLocation="FundamentalSeries.xsd"/> 
    <xs:import namespace="http://fsr.com/FundamentalAnalytics/2011-07-07/" schemaLocation="FundamentalSeriesPeriod.xsd"/> 
    <xs:import namespace="http://fsr.com/FundamentalAnalytics/2011-07-07/" schemaLocation="FundamentalSeriesFiscalCalendar.xsd"/> 
    <xs:import namespace="http://fsr.com/FundamentalAnalytics/2011-07-07/" schemaLocation="FundamentalAnalytic.xsd"/> 
    <xs:import namespace="http://data.schemas.financial.fsr.com/metadata/2010-10-10/" schemaLocation="../../Metadata/2010-10-10/RelationshipDataItem.xsd"/> 
    <xs:import namespace="http://data.schemas.financial.fsr.com/metadata/2010-10-10/" schemaLocation="../../Metadata/2010-10-10/IdentifierDataItem.xsd"/> 
    <xs:import namespace="http://data.schemas.financial.fsr.com/metadata/2010-10-10/" schemaLocation="../../Metadata/2010-10-10/AdminStatusDataItem.xsd"/> 
    <xs:import namespace="http://fsr.com/ESGSupportingInfo/2011-07-07/" schemaLocation="ESGSupportingInfo.xsd"/> 
    <xs:import namespace="http://fsr.com/FinancialStatement/2011-07-07/" schemaLocation="FinancialStatementLineItem.xsd"/> 
    <xs:import namespace="http://fsr.com/FinancialStatement/2011-07-07/" schemaLocation="FinancialStatementNonNumericLineItem.xsd"/> 
    <xs:import namespace="http://fsr.com/StandardizedStatement/2011-07-07/" schemaLocation="StandardizedStatementLineItem.xsd"/> 
    <xs:complexType name="FundamentalDataItem" mixed="false"> 
     <xs:complexContent> 
      <xs:extension base="env:DataItemBase"> 
       <xs:sequence> 
        <xs:element ref="Fundamental" minOccurs="0"/> 
       </xs:sequence> 
      </xs:extension> 
     </xs:complexContent> 
    </xs:complexType> 
    <xs:complexType name="FinancialPeriodDataItem" mixed="false"> 
     <xs:complexContent> 
      <xs:extension base="env:DataItemBase"> 
       <xs:sequence> 
        <xs:element ref="pe:FinancialPeriod" minOccurs="0"/> 
       </xs:sequence> 
      </xs:extension> 
     </xs:complexContent> 
    </xs:complexType> 

вот моя XSD структура дерева

Главная XSD

<xs:import schemaLocation="../../Envelope/2008-05-01/Mentale.xsd" namespace="http://data.schemas.tfn.son.com/Envelope/2008-05-01/"/> 

<xs:include schemaLocation="MentaleDataItem.xsd"/> 
<xs:complexType mixed="false" name="MentaleDataItem"> 
    <xs:complexContent> 
     <xs:extension base="env:DataItemBase"> 
      <xs:sequence> 
      <xs:element minOccurs="0" ref="Mentale"/> 
      </xs:sequence> 
     </xs:extension> 
    </xs:complexContent> 
</xs:complexType> 
</xs:schema> 

ответ

0

Вы можете использовать JAXB для этого. см. Oracle Documentation

JAXB может использоваться для управления XML.

JAXB возьмет XML-схему, которую вы пишете, и создайте набор классов, соответствующих этой схеме. Утилиты JAXB создадут иерархию структур данных для управления этим XML.

JAXB можно затем использовать для чтения XML-файла, а затем создать экземпляры сгенерированных классов, загруженных данными из вашего XML. JAXB также выполняет обратное: принимает классы Java и генерирует соответствующий XML.

Мне нравится JAXB, потому что он прост в использовании и поставляется с> Java 1.6 (если вы используете 1.5 или меньше, вы можете загрузить JAXB .jars.) Способ создания иерархии классов интуитивно понятен и в мой опыт, делает достойную работу, абстрагируя «XML», чтобы я мог сосредоточиться на «данных».

Есть другие программные что облегчает это, например: https://www.liquid-technologies.com/

+0

Так я должен создать класс Java для каждого XSD в отдельности да то как я связать them.Can вы дать пример .Я новичок в XML и xsd – SUDARSHAN

+0

JAXB позаботится обо всем ... Просто просмотрите документацию. –

+0

У меня есть три XSD, которые относятся к другому, и это один относится к другому. Я также обновил структуру дерева XSD. Пожалуйста, посмотрите один раз. Почему я спрашиваю, что я попробовал, но выбрал исключение – SUDARSHAN