我想要给定日期字段上的特定映射,但是此字段的xpath会生成一个空节点,而online xpath tester会正确评估它。如何调试Maven插件的分辨率?
这是用于客户端消息处理的,我无法控制xsd或传入消息,但是我需要以不同的方式处理两个xml:Date。因此,我需要特定的绑定来覆盖全局绑定,并使用xpath表达式来定位所需的日期字段,但是maven插件无法正确解析
这是我用于生成的Maven个人资料:
<profile>
<id>xsd2java</id>
<dependencies>
<dependency>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxb2-maven-plugin</artifactId>
<version>2.3</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxb2-maven-plugin</artifactId>
<version>2.2</version>
<executions>
<execution>
<id>xjc-schema1</id>
<goals>
<goal>xjc</goal>
</goals>
<configuration>
<sources>
<source>./src/main/xsd/out</source>
</sources>
<packageName>test.model.out</packageName>
<clearOutputDir>true</clearOutputDir>
<outputDirectory>./src/main/generated</outputDirectory>
<xjbSources>
<xjbSource>./src/main/xjb</xjbSource>
</xjbSources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
这是我的绑定文件:
<bindings xmlns="http://java.sun.com/xml/ns/jaxb" version="2.0"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<bindings node="//xs:element[@name='MadeOut']//xs:element[@name='Date']">
<javaType name="java.util.Date" xmlType="xs:date"
parseMethod="fr.sncf.fret.ex.socle.utilitaires.bind.Converter.parseDate"
printMethod="fr.sncf.fret.ex.socle.utilitaires.bind.Converter.printDateWithoutTimeZone"
/>
</bindings>
<globalBindings>
<javaType name="java.util.Date" xmlType="xs:date"
parseMethod="fr.sncf.fret.ex.socle.utilitaires.bind.Converter.parseDate"
printMethod="fr.sncf.fret.ex.socle.utilitaires.bind.Converter.printDate"
/>
</globalBindings>
</bindings>
这是xsd的摘录,其中我要使用“绑定节点”定位的字段:
<xs:element name="CIMECNMessages">
<xs:complexType>
<xs:sequence>
<xs:element name="MadeOut">
<xs:complexType>
<xs:sequence>
<xs:element name="Place" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="35" />
<xs:minLength value="1" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Date" minOccurs="0" type="xs:date">
</xs:element >
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
我使用此命令生成类:
mvn -P xsd2java clean install
运行命令时收到的消息是“ XPATH评估” // xs:element [@ name ='MadeOut'] // xs:element [@ name ='Date']“生成一个空节点”
我要找的是
注意:我使用“ // *” xpath表达式作为测试,并且该插件抛出错误“此表达式列出的参数过多”,因此我知道绑定确实适用于我的xsd。