当前位置: 首页 > 知识库问答 >
问题:

有没有办法忽略JAXB绑定文件中的空节点?

史商震
2023-03-14

我正在尝试创建一个通用的。xjb绑定文件,在多个项目中从WSDLs/XSD生成一致的Java类。我们通过maven-jaxb2-plugin(由@lexicore制作)生成代码。

问题在于多项目部分。如果特定的绑定指令与提供的XSD或WSDL中的任何内容都不匹配,则类生成失败

对“

我怎样才能告诉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


共有1个答案

壤驷德寿
2023-03-14

您需要在绑定上设置required=“no”属性,以允许不匹配任何节点,即。

<jxb:bindings required="no" multiple="true" node="//*[@type='xs:dateTime']">

根据您的上下文,您也可以选择说required=“false”或required=“0”。

 类似资料:
  • 我有一个json看起来像这样: 如您所见,loc对象有时是json对象,有时是双数组。在不编写自定义反序列化程序的情况下,有没有办法避免,并在loc对象是json对象而不是双数组时将其设置为null。

  • 我花了一些时间来调查是什么问题,但我不能解决它。当我在XML下面反封送和回封送时,我看到的是不同的XML。 在上面的xml中,只有一个标记(第一个),其余所有(包括名称空间)都是意外元素。另一个应用程序发送上述XML。 null 我真的不明白QName的事

  • 问题内容: 使用PMD,如果要忽略特定的警告,则可以使该行被忽略。 FindBugs有类似的东西吗? 问题答案: FindBugs的初始方法涉及XML配置文件(也称为过滤器)。这确实不如PMD解决方案方便,但是FindBugs只能在字节码上工作,而不能在源代码上工作,因此注释显然不是一个选择。例: 但是,为解决此问题,FindBugs稍后引入了另一个基于注释的解决方案(请参阅参考资料),您可以在类

  • 当目标WSDL/XSDS放在某些特定路径下时,wsimport和xjc命令(都是作为Java JDK的一部分下载的)将忽略提供的jaxb绑定文件。

  • 问题内容: 我正在使用MySQL GUI,通过选择某些表并将从备份转储生成的语句运行到空表(新模式)中,以将某些站点迁移到CMS的新版本。旧表中有几列在新表中不存在,因此脚本会因以下错误而停止: 脚本行:1个“字段列表”中的未知列“ user_id” 挑选要导出的所需列,或编辑转储文件将非常乏味且耗时。要解决此问题,我将在生成错误时创建未使用的列,通过运行查询导入数据,然后在处理完该表后删除未使用

  • 问题内容: 是否有可能以某种方式忽略此错误?我发现将自己不想运行的代码放在前面比注释它要容易得多(当注释重叠并且表现不佳时)… 问题答案: 否。这是编译时错误。因此,在运行课程之前,您 必须 摆脱它。 我通常要做的是在其前面放置一个虚假陈述。就像是: 使用此代码,您将不会出错。您将得到想要的东西。