通过jaxb产生java code

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<name>xxxxx</name>
	<groupId>xxxxx</groupId>
	<artifactId>xxxxx</artifactId>
	<version>0.1</version>

	<build>
		<plugins>
			<plugin>
				<groupId>org.codehaus.mojo</groupId>
				<artifactId>emma-maven-plugin</artifactId>
				<configuration>
					<filters>
						<filter>-org.fpml.reporting.*</filter>
					</filters>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.codehaus.mojo</groupId>
				<artifactId>jaxb2-maven-plugin</artifactId>
				<version>1.5</version>
				<executions>
					<execution>
						<id>xml_reporting-xjc</id>
						<goals>
							<goal>xjc</goal>
						</goals>
						<configuration>
							<schemaDirectory>${project.basedir}/src/main/resources/xsd/</schemaDirectory>
							<packageName>org.fpml.reporting</packageName>
							<staleFile>${project.build.directory}/jaxb2/.reportingXjcStaleFlag</staleFile>
						</configuration>
					</execution>
				</executions>
				<configuration>
					<outputDirectory>${project.basedir}/target/generated/java</outputDirectory>
				</configuration>
			</plugin>
		</plugins>
	</build>

</project>


下面的例子是定义extension xsd,并产生相应的java.
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>

    <groupId>xxxxx</groupId>
    <artifactId>xxxxx</artifactId>
    <version>xxxxx</version>

    <build>
        <plugins>
            <plugin>
                <groupId>org.jvnet.jaxb2.maven2</groupId>
                <artifactId>maven-jaxb2-plugin</artifactId>
                <version>0.12.3</version>
                <executions>
                    <execution>
                        <id>xjc-extension</id>
                        <goals>
                            <goal>generate</goal>
                        </goals>
                        <configuration>
                            <extension>true</extension>
                            <args>
                                <arg>-npa</arg>
                            </args>
                            <bindingDirectory>src/main/resources/xsd/</bindingDirectory>
                            <bindingIncludes>
                                <include>bindings.xml</include>
                            </bindingIncludes>
                            <schemaDirectory>src/main/resources/xsd/extension</schemaDirectory>
                            <schemaIncludes>
                                <include>extensions.xsd</include>
                            </schemaIncludes>
                        </configuration>
                    </execution>
                </executions>
                <dependencies>
			        <dependency>
			            <groupId>commons-io</groupId>
			            <artifactId>commons-io</artifactId>
			            <version>2.4</version>
			        </dependency>
			    </dependencies>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <version>2.4</version>
                <executions>
                    <execution>
                        <id>attach-sources</id>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <artifactId>maven-install-plugin</artifactId>
                <version>2.3.1</version>
                <configuration>
                    <createChecksum>true</createChecksum>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <dependencies>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.4</version>
        </dependency>
    </dependencies>
</project>


Binding file定义:
<bindings xmlns="http://java.sun.com/xml/ns/jaxb" version="2.1">
    <bindings schemaLocation="Standard/fpml-main-5-7.xsd">
        <schemaBindings>
            <package name="org.fpml.reporting"/>
        </schemaBindings>
    </bindings>

    <bindings schemaLocation="Extension/extensions.xsd">
        <schemaBindings>
            <package name="xxxxx.extension"/>
        </schemaBindings>
    </bindings>
</bindings>


Extension file定义:
<schema targetNamespace="http://www.statestreet.com/FpML-Extension"
        xmlns="http://www.w3.org/2001/XMLSchema"
        xmlns:xsd="http://www.w3.org/2001/XMLSchema"
        elementFormDefault = "unqualified">
       <xsd:include schemaLocation="fpml-reporting-position-ext.xsd"/>
</schema>


fpml-reporting-position-ext.xsd定义:
<schema targetNamespace="http://www.statestreet.com/FpML-Extension"
	xmlns:ext="http://www.statestreet.com/FpML-Extension" xmlns="http://www.w3.org/2001/XMLSchema"
	xmlns:fpml="http://www.fpml.org/FpML-5/reporting" elementFormDefault="qualified">
	<import namespace="http://www.fpml.org/FpML-5/reporting"
		schemaLocation="../standard/fpml-main-5-7.xsd" />

	<simpleType name="statusEnum">
		<restriction base="normalizedString">
			<enumeration value="booked" />
			<enumeration value="unbooked" />
		</restriction>
	</simpleType>

	<complexType name="Position">
		<complexContent>
			<extension base="fpml:ReportedPosition">
				<sequence>
					<element name="status" type="ext:statusEnum" minOccurs="0" />
					<element name="constituent" type="ext:PositionConstituent"
						minOccurs="0" />
				</sequence>
			</extension>
		</complexContent>
	</complexType>

	<complexType name="FxSingleLeg">
		<complexContent>
			<extension base="fpml:FxSingleLeg">
				<sequence>
					<element minOccurs="0" name="exchangedCurrency1" type="ext:Payment" />
					<element minOccurs="0" name="exchangedCurrency2" type="ext:Payment" />
				</sequence>
			</extension>
		</complexContent>
	</complexType>

	<complexType name="Payment">
		<complexContent>
			<extension base="fpml:Payment">
				<sequence>
					<element minOccurs="0" name="paymentAmount" type="fpml:Money" />
				</sequence>
			</extension>
		</complexContent>
	</complexType>

	<complexType name="NettedBenchmarkFX">
		<sequence>
			<element name="agreementId" type="normalizedString"
				minOccurs="0" />
			<element name="pricingSite" type="normalizedString"
				minOccurs="0" />
			<element name="fxSingleLeg" type="ext:FxSingleLeg" minOccurs="0" />
		</sequence>
	</complexType>

	<complexType name="PositionConstituent">
		<complexContent>
			<extension base="fpml:PositionConstituent">
				<sequence>
					<element name="nettedBenchmarkFX" type="ext:NettedBenchmarkFX"
						minOccurs="0" />
				</sequence>
			</extension>
		</complexContent>
	</complexType>

</schema>

猜你喜欢

转载自qtlkw.iteye.com/blog/2227660