通过jaxb2-maven-plugin评估时,XPATH生成空节点

时间:2019-04-15 10:28:34

标签: java xpath jaxb2-maven-plugin

我想要给定日期字段上的特定映射,但是此字段的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表达式及其错误原因(如果有的话)的提示
  • 测试我的xpath表达式的有效在线工具
  • 一种调试maven插件解析阶段的方法/工具,以准确了解通过该表达式看到的内容

注意:我使用“ // *” xpath表达式作为测试,并且该插件抛出错误“此表达式列出的参数过多”,因此我知道绑定确实适用于我的xsd。

0 个答案:

没有答案