3

これは、私の OSRMResponseDto.xsd からの抜粋です。

  <xsd:complexType name="OSRMResponseDto">
    <xsd:sequence>
     <xsd:element name="route_geometry" type="xsd:string"/>
     <xsd:element name="route_name" type="xsd:string"/>
     <xsd:element name="status" type="xsd:long"/>
     <xsd:element name="status_message" type="xsd:string"/>
    </xsd:sequence>
  </xsd:complexType>

バインディング.xjb:

<jaxb:bindings 
    xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" version="2.1">
    <jaxb:globalBindings underscoreBinding="asCharInWord"/>
</jaxb:bindings>

問題は、maven が次のようなフィールドを持つクラスを生成することです。

@XmlElement(name = "route_geometry", namespace = "http://osrmresponse.generated.core", required = true)
protected String route_Geometry;
@XmlElement(name = "route_name", namespace = "http://osrmresponse.generated.core", required = true)
protected String route_Name;
@XmlElement(namespace = "http://osrmresponse.generated.core")
protected long status;
@XmlElement(name = "status_message", namespace = "http://osrmresponse.generated.core", required = true)
protected String status_Message;

ここでわかるように、2 番目の単語が大文字になっているため、gson は OSRM サーバーからの出力応答を DTO クラスに変換できませんでした。フィールドを .xsd ソースと同じにする方法は?

UPD1: maven プラグイン構成:

    <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>jaxb2-maven-plugin</artifactId>
        <version>1.6</version>
        <executions>
            <execution>
                <id>gpx-xjc</id>
                <goals>
                    <goal>xjc</goal>
                </goals>
                <configuration>
                    <bindingDirectory>${basedir}/src/main/xsd/gpx/schema</bindingDirectory>
                    <clearOutputDir>false</clearOutputDir>
                    <npa>true</npa>
                    <schemaDirectory>${basedir}/src/main/xsd/gpx/schema</schemaDirectory>
                    <target>2.0</target>
                    <extension>true</extension>
                </configuration>
            </execution>
            <execution>
                <id>interfaces-xjc</id>
                <goals>
                    <goal>xjc</goal>
                </goals>
                <configuration>
                    <bindingDirectory>${basedir}/src/main/xsd/interfaces</bindingDirectory>
                    <clearOutputDir>false</clearOutputDir>
                    <npa>true</npa>
                    <schemaDirectory>${basedir}/src/main/xsd/interfaces</schemaDirectory>
                    <target>2.0</target>
                </configuration>
            </execution>
        </executions>
        <dependencies>
            <dependency>
                <groupId>xml-apis</groupId>
                <artifactId>xml-apis</artifactId>
                <version>2.0.2</version>
            </dependency>
            <dependency>
                <groupId>xerces</groupId>
                <artifactId>xercesImpl</artifactId>
                <version>2.9.1</version>
            </dependency>
        </dependencies>
        <configuration>
            <!--
                Package name of the generated sources.
            -->
            <packageName>core.generated</packageName>

            <!--
                Copy all source XSDs into the generate artifact.
                Place them at the supplied xsdPathWithinArtifact, that is within the given directory.
            -->
            <xsdPathWithinArtifact>src/main/java/core/xsds</xsdPathWithinArtifact>
        </configuration>
    </plugin>
4

0 に答える 0