如何从Master XSD生成java类对象,该对象在java中引用了xsd

时间:2017-01-12 06:13:37

标签: java xml xsd jaxb

我有一个xml文件,引用xsd .Master引用xsd也有很多引用xsd。

我的问题是如何将xsd转换为具有许多引用xsd的java类。

我是否必须在同一位置提供所有引用的xsd?

这是我的xsd结构:

hashCode()

这是我的xsd树结构

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

1 个答案:

答案 0 :(得分:0)

您可以使用JAXB。见Oracle Documentation

JAXB可用于操作XML。

JAXB将采用您编写的XML Schema并创建一组与该模式对应的类。 JAXB实用程序将创建用于操作该XML的数据结构层次结构。

然后可以使用JAXB读取XML文件,然后创建生成的类的实例 - 包含XML中的数据。 JAXB也做了相反的事情:接受java类,并生成相应的XML。

我喜欢JAXB,因为它易于使用,并附带&gt; Java 1.6(如果你使用1.5或更少,你可以下载JAXB .jars。)它创建类层次结构的方式是直观的,根据我的经验,做一个体面的工作抽象掉&#34; XML&#34;这样我就可以专注于&#34;数据&#34;。

还有其他软件可以促进这一点,例如:https://www.liquid-technologies.com/