我正在尝试创建一个通用的.xjb
绑定文件,以便跨多个项目从WSDL / XSD生成一致的Java类。
我们通过maven-jaxb2-plugin
生成代码(由@lexicore制作)。
问题出在多个项目部分。如果特定绑定指令在提供的XSD或WSDL中不匹配,则类生成将失败并显示
"
<some_xpath_expression>
&#34;的XPath评估导致空目标节点
如何告诉JAXB忽略这些情况,以便无论使用哪种元素类型,绑定文件都可以在任何项目中使用而无需微调?
这是一个(精简版)展示我遇到的问题:
<?xml version="1.0" encoding="UTF-8"?>
<jxb:bindings xmlns:jxb="http://java.sun.com/xml/ns/jaxb" version="2.1"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
jxb:extensionBindingPrefixes="xjc">
<jxb:bindings schemaLocation="path/to/the/schema" node="/xs:schema">
<jxb:bindings multiple="true" node="//*[@type='xs:dateTime']">
<xjc:javaType name="java.time.LocalDateTime" adapter="a.b.c.LocalDateTimeAdapter" />
</jxb:bindings>
</jxb:bindings>
</jxb:bindings>
如果我尝试从没有dateTime
元素的模式生成类,它将失败。
最终,目标是创建一些东西,各个团队的所有项目都可以重用,而不会改变schemaLocation
之外的任何内容。
答案 0 :(得分:1)
您需要在您希望不允许与任何节点匹配的绑定上设置 required =“no”属性,即
<jxb:bindings required="no" multiple="true" node="//*[@type='xs:dateTime']">
根据您的具体情况,您可以选择 required =“false”或 required =“0”。