从 XJC 中导入的架构解析类型定义失败

2023-12-25

我使用 JAXB 获得了此 API,以便通过命名引用方便地使用由 XJC(XML 到 Java)编译器从 XML 模式生成的对象模型。它通过各种背景魔法和反射抽象了 JAXB 上下文的创建和查找 ObjectFactory 方法。其基本要点是,您始终定义一个通用模式,然后定义任意数量(也可能是 0)的模式“扩展”该通用模式,每个模式都会产生自己的数据模型。通用模式带有可重用的定义,扩展它的定义使用这些定义来组成自己的模型。

我现在遇到了一种情况,我想为多个项目重用通用模式。通用类型定义在项目中应该保持相同,并且一些代码将根据这些代码生成的抽象类构建。因此,我需要首先为某些通用模式生成类,然后生成那些扩展并单独使用它们的类。我在构建过程中使用 Maven。

我遇到的问题是从扩展模式中的通用模式解析类型定义。

假设我的通用架构名为“general.xsd”,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.foobar.com/general"
xmlns:gen="http://www.foobar.com/general"
elementFormDefault="qualified" attributeFormDefault="qualified">

    <!-- Element (will usually be root) -->
    <xs:element name="transmission" type="gen:Transmission" />

    <!-- Definition -->
    <xs:complexType name="Transmission" abstract="true">
        <xs:sequence>
            <!-- Generic parts of a transmission would be in here... -->
        </xs:sequence>
    </xs:complexType>

</xs:schema>

旁边有一个绑定文件,用于进行一些命名自定义并设置输出的包名称:

<?xml version="1.0" encoding="UTF-8"?>
<bindings xmlns="http://java.sun.com/xml/ns/jaxb" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/jaxb http://java.sun.com/xml/ns/jaxb/bindingschema_2_0.xsd"
    version="2.1">

    <!-- Bindings for the general schema -->
    <bindings schemaLocation="general.xsd" node="/xs:schema">

        <schemaBindings>
            <package name="com.foobar.models.general"/>
        </schemaBindings>

        <bindings node="//xs:complexType[@name='Transmission']">
            <!-- Some customization of property names here... -->
        </bindings>

</bindings>

然后,我将在该项目的 POM 中添加下一部分来生成 Java 类:

<plugin>
    <groupId>org.jvnet.jaxb2.maven2</groupId>
    <artifactId>maven-jaxb21-plugin</artifactId>
    <version>0.8.0</version>
    <executions>
        <execution>
            <id>xjc-generate</id>
            <goals>
                <goal>generate</goal>
            </goals>
            <configuration>
                <schemaDirectory>${basedir}/src/main/resources/com/foobar/schemas</schemaDirectory>
                <schemaLanguage>XMLSCHEMA</schemaLanguage>
                <addCompileSourceRoot>true</addCompileSourceRoot>
                <episode>true</episode>
                <removeOldOutput>true</removeOldOutput>
            </configuration>
        </execution>
    </executions>
</plugin>

如您所见,我正在使用 JAXB2.1 Maven 插件。我已设置选项来生成用于逐步编译的剧集文件。删除以前的输出的选项是为了解决错误;它所做的只是确保首先清理所有内容,以便强制重新编译。

到目前为止,一切都很好。该项目编译顺利。应该注意的是,除了生成的 Java 类之外,我还将模式打包到生成的 jar 文件中。所以这些在类路径上可用!这sun-jaxb.episode文件应该在 META-INF 中。

然后我开始使用模式的项目,该模式将扩展上述内容,首先导入它。其中一种“子类型”可能如下所示(我将其称为 sub.xsd):

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.foobar.com/sub"
xmlns:sub="http://www.foobar.com/sub"
xmlns:gen="http://www.foobar.com/general"
elementFormDefault="qualified" attributeFormDefault="qualified">

    <xs:import namespace="http://www.foobar.com/general" />

    <!-- Definition -->
    <xs:complexType name="SubTransmission">
        <xs:complexContent>
            <xs:extension base="gen:Transmission">
                <xs:sequence>
                    <!-- Additional elements placed here... -->
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>

</xs:schema>

同样,有一个绑定文件:

<?xml version="1.0" encoding="UTF-8"?>
<bindings xmlns="http://java.sun.com/xml/ns/jaxb" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/jaxb http://java.sun.com/xml/ns/jaxb/bindingschema_2_0.xsd"
    version="2.1">

    <!-- Bindings for sub type -->
    <bindings schemaLocation="sub.xsd" node="/xs:schema">

        <schemaBindings>
            <package name="com.foobar.models.sub"/>
        </schemaBindings>

    </bindings>

</bindings>

以下是该项目 POM 中负责 XJC 生成的部分内容:

<plugin>
    <groupId>org.jvnet.jaxb2.maven2</groupId>
    <artifactId>maven-jaxb21-plugin</artifactId>
    <version>0.8.0</version>
    <executions>
        <execution>
            <id>xjc-generate</id>
            <goals>
                <goal>generate</goal>
            </goals>
            <configuration>
                <schemaDirectory>${basedir}/src/main/resources/com/foobar/schemas</schemaDirectory>
                <schemaLanguage>XMLSCHEMA</schemaLanguage>
                <addCompileSourceRoot>true</addCompileSourceRoot>
                <episode>false</episode>
                <catalog>${basedir}/src/main/resources/com/foobar/schemas/catalog.cat</catalog>
                <episodes>
                    <episode>
                        <groupId>com.foobar</groupId>
                        <artifactId>foobar-general-models</artifactId>
                        <version>1.0.0-SNAPSHOT</version>
                        <scope>compile</scope>
                    </episode>
                </episodes>
                <removeOldOutput>true</removeOldOutput>
            </configuration>
        </execution>
    </executions>
</plugin>

最初,所有模式都在一个文件夹中,我有schemaLocation导入中的属性设置为general.xsd,效果很好。但现在事情是跨项目分开的,我遇到了问题。第一个问题是找不到其他架构。我已经解决了这个问题schemaLocation属性出自<xs:import />元素,只保留namespace属性并添加目录文件(catalog.cat)您可以在上面的 POM 摘录中看到引用。其内容是:

PUBLIC "http://www.foobar.com/general" "classpath:/com/foobar/schemas/general.xsd"

这似乎有效,因为我不再收到指出找不到架构的错误。但由于某种原因,从导入的架构解析实际类型定义仍然失败。这是例外情况:

Error while parsing schema(s).Location [ file:/C:/NetBeans_groups/Test/SubModelBundle/src/main/resources/com/foobar/schemas/sub.xsd{...,...}].
org.xml.sax.SAXParseException: src-resolve: Cannot resolve the name 'gen:Transmission' to a(n) 'type definition' component.

到目前为止,这是我尝试过的:

  • 使用目录文件。部分成功,因为现在可以找到导入的架构。
  • 让通用模式的编译生成一个情节文件,并将其用于子模式的编译。似乎没有什么区别,尽管这应该只在类型解析后发挥作用,所以我认为这还不重要。
  • 使用不同的 JAXP(注意:notJAXB、JAXP) 实现。它确实使用了不同的,因为我可以在异常的堆栈跟踪中看到这一点,但最终结果是相同的。
  • Use the maven-jaxb22-plugin而不是 21。没有区别。

在网上查了一下,似乎人们至少从 2006 年就开始遇到这个问题,它可能与一些 Xerces 解析器问题有关。我希望这不是一个已经潜伏了 6 年而没有人关心修复的错误。其他人有一些建议吗?也许有人遇到了同样的问题并找到了解决方案?我能想到的唯一解决方法是使用“svn:externals”将通用模式拖到子项目中,然后在那里重新生成类,但它很脏,并且只有当您可以连接到我们的 svn 存储库时才有效。

非常感谢您阅读这篇长文章。请记住,我已经从现有项目中获取了上述所有内容,并为了匿名而替换了一些名称空间和其他内容,因此可能存在一些拼写错误。


此答案已编辑。之前,我有一个使用自定义目录解析器的解决方案。然而,我现在发现了真正的问题。解释如下。对于提供解决方案的 TL;DR 版本,请滚动到此答案的底部。


问题出在目录文件上。请注意它是如何有这一行的:

PUBLIC "http://www.foobar.com/general" "classpath:/com/foobar/schemas/general.xsd"

那说什么?它说如果公共IDhttp://www.foobar.com/general遇到时,架构的系统 ID 是classpath:/com/foobar/schemas/general.xsd。到目前为止,一切都很好。如果我们采取schemaLocation属性出自我们的<xs:import />元素,唯一保留的是公共 ID(命名空间 URN),目录文件告诉我们在哪里可以找到它的模式。

当该模式随后使用时就会出现问题<xs:include />元素。它们包括具有相同目标命名空间的模式文件。它们指定系统 ID(相对位置)。所以您希望将其用于解决方案。然而,记录对目录解析器的调用表明,请求是使用公共 ID(命名空间)和系统 ID(相对位置)进行解析的。这就是问题所在。由于目录文件中的绑定,公共 ID 被优先考虑。这将我们直接引向general.xsd再次归档。

举例来说,一般架构如下:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.foobar.com/general"
xmlns:gen="http://www.foobar.com/general"
elementFormDefault="qualified" attributeFormDefault="qualified">

    <!-- Including some definitions from another schema in the same location -->
    <xs:include schemaLocation="simple-types.xsd" />

    <!-- Remaining stuff... -->

</xs:schema>

使用该模式的模式如下:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.foobar.com/sub"
xmlns:sub="http://www.foobar.com/sub"
xmlns:gen="http://www.foobar.com/general"
elementFormDefault="qualified" attributeFormDefault="qualified">

    <xs:import namespace="http://www.foobar.com/general" />

    <!-- Remaining stuff... -->

</xs:schema>

当 XJC 解析最后一个模式时,会发生这种情况:

  1. 解析本地定义。
  2. 遇到对定义的引用imported schema.
  3. 检查导入,发现没有系统ID,只有公共ID(http://www.foobar.com/general).
  4. 检查目录。
  5. 查找公共 ID 的绑定classpath:/com/foobar/schemas/general.xsd.
  6. 解析导入模式中的定义。
  7. 遇到对定义的引用included架构(简单类型.xsd)。
  8. 检查包括、查找系统 ID。
  9. 检查目录中的系统 ID,但公共 ID 是隐式的。
  10. 查找公共 ID 的绑定classpath:/com/foobar/schemas/general.xsd,它优先于系统 ID。
  11. 解析包含的架构定义失败。

OASIS XML 目录规范中描述了尝试解析的顺序的详细信息:https://www.oasis-open.org/committees/entity/spec.html#s.ext.ent https://www.oasis-open.org/committees/entity/spec.html#s.ext.ent。这需要一些解释,但您会发现,如果首选解析方法是公共 ID,则即使存在系统 ID,在目录文件中绑定时这些方法也会优先。

那么,解决方案是指定系统 ID 是首选解析方法,而不是在导入中提供系统 ID,以便使用目录的公共 ID 绑定并依赖于包含中的相对系统 ID。在 OASIS XML 目录格式中,您可以使用属性prefer="system"。在 OASIS TR9401 目录格式中,您可以使用OVERRIDE no。显然默认是公开/是的。

所以我的目录文件变成:

OVERRIDE no
PUBLIC "http://www.foobar.com/general" "classpath:/com/foobar/schemas/general.xsd"

现在常规目录解析器工作正常。我不再需要定制的了。但是,我没有想到在包含架构时公共 ID 仍用于解析,并且优先于系统 ID。我原以为公共 ID 仅用于导入,并且如果解析失败,仍会考虑系统 ID。仅向自定义解析器添加一些日志记录就揭示了这一点。


简短的回答:添加OVERRIDE no作为 TR9401 目录文件或属性中的第一个指令prefer="system"到 XML 目录文件。不指定schemaLocation in <xs:import />指令,但将命名空间绑定到目录文件中正确的架构位置。确保<xs:include />使用包含模式的相对路径。

另一个有趣的事情:XJC 使用的目录解析器不仅可以处理classpath:URI,而且还maven:URI,与 Maven 工件相关。如果您使用它作为构建工具,这非常有用。http://confluence.highsource.org/display/MJIIP/User+Guide#UserGuide-Usingcatalogs http://confluence.highsource.org/display/MJIIP/User+Guide#UserGuide-Usingcatalogs

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 XJC 中导入的架构解析类型定义失败 的相关文章

  • Hibernate版本的jars,maven,应该放在一起吗?

    我很难理解哪些 jar 版本应该与 hibernate 一起使用 我有一组可以一起工作的 hibernate 版本 Maven 东西 但我不知道为什么 我怎样才能知道哪些版本与其他版本一起工作 我也想升级我的休眠 但我不知道要放入什么版本号
  • 从原型创建 Maven 项目时出错:501 HTTPS 必需

    I run mvn archetype generate并得到这个错误 Error reading archetype catalog http repo maven apache org maven2 org apache maven w
  • Eclipse/Maven:运行 JUnit 测试时未编译它们

    我正在使用 Maven 和 Eclipse m2eclipse 插件 开发一个项目 我在 JUnit 测试中遇到问题 有时 当在 Eclipse 中运行它们时 它们不会被编译 而是使用旧的类文件 当我删除类文件时 我得到ClassNotFo
  • Maven 配置文件 - 如何为父级运行插件一次,为模块运行多次?

    我对詹金斯的输出有点困惑 Jenkins 上的工作 底部缩短了 pom xml mvn deploy Pprofile1 我的所有插件都会运行 4 次 父 pom xml 父 module1 pom xml 父 module2 pom xm
  • maven 构建 OSGi 的问题(包括依赖项)

    我目前正在从 OSGi iPOJO 和 iPOJO Annotations 开始 并尝试构建一个要在 Felix 中部署的简单组件 不幸的是 我遇到了各种问题 这些问题需要我花几个小时才能解决 或者在浪费时间后我什至无法解决 如下所示 我想
  • buildnumber-maven-plugin 属性 ${buildNumber} 的可见性

    我正在尝试使用buildnumber maven plugin http www mojohaus org buildnumber maven plugin将 SCM 内部版本号附加到 WAR 工件名称 然后使用tomcat7 maven
  • 如何在公共 Maven/Ivy 存储库中搜索特定类?

    有一些网站 例如http mvnrepository com http mvnrepository com 让我搜索 工件 并给出定义 我可以将其添加到我的项目中 以便从公共存储库自动下载库 但是这个特定的例子 mvnrepository
  • 自定义 Netbeans 平台配置应该在哪里?文件是这样让maven找到它吗?

    在 NetBeans 平台之上构建的应用程序具有
  • 使用 Maven 插件测试工具测试 Mojos 的默认值和表达式:

    我在使用 Maven 插件测试工具 2 0 alpha1 时遇到问题 当我想测试 Mojo 时 参数的默认值和表达式不适用 我有以下参数 p The output file to write the settings to p parame
  • maven-jar-plugin 不包含 .gitignore 文件

    我尝试使用maven将应用程序打包成jar文件 不知怎的 除了 gitignore文件被添加到 jar 中 为什么会跳过此文件以及如何禁用此文件 即使我尝试像下面这样包含它 包含也会被忽略 并且 jar 文件仍然为空
  • Gradle 构建错误

    由于此错误 我的构建失败 评估项目 DBSupport 时出现问题 gt 找不到 参数 project Core Platform 上提供的方法providedCompile 项目 DBSupport 知道这意味着什么吗 descripti
  • 使用 JAXB 编组 LocalDate

    我正在构建一系列链接类 我希望能够将其实例编组到 XML 以便我可以将它们保存到文件中并稍后再次读取它们 目前我使用以下代码作为测试用例 import javax xml bind annotation import javax xml b
  • Intellij IDEA 断点停止在 JAR 中,而不是我的项目的源代码中

    我在 java 文件中设置了一个断点 我通过 maven jetty 插件启动了 jetty 我设置断点的java文件也打包成JAR了 Intellij 在断点处停止 但它显示了打包到 JAR 中的文件而不是 java 文件 它的行为就像我
  • Spring Boot 模板未解决

    我正在尝试使用 Spring Boot 和 Thymeleaf 构建一个独立的 Web 应用程序 该应用程序在 IntelliJ IDEA 中运行良好 但我无法单独运行该 jar 显然模板不包括在内 我的项目结构如下 src main ja
  • JAXB - 忽略元素

    有什么方法可以忽略 Jaxb 解析中的元素吗 我有一个很大的 XML 文件 如果我可以忽略其中一个大而复杂的元素 那么它的解析速度可能会快很多 如果它根本无法验证元素内容并解析文档的其余部分 即使该元素不正确 那就更好了 例如 这应该只生成
  • Spring Boot 中的 JSTL 支持

    虽然我知道有JSP 支持中的一些限制 http docs spring io spring boot docs current reference html boot features developing web applications
  • 导出 Maven 依赖项并维护存储库文件夹结构

    我想知道是否可以导出 复制使用 Maven 管理的项目的依赖项 同时维护本地存储库中采用的文件夹结构 我的需求的根源近十年来 我在本地存储库 8GB 中积累了很多工件 我不再处理以前分配的那些吸引了大部分工件的旧项目 现在 我需要将一个项目
  • 更改 Jenkins 云构建的 gradle 本地存储库缓存位置

    我需要更改存储库下载的保存位置 我无法使用用户主目录 因为我的构建是在云服务上运行的 该服务不保留此内容 这导致我的依赖项被一遍又一遍地下载 并消耗了大量的云存储时间 我正在使用 gradle 1 0 里程碑 5 我的构建文件具有以下存储库
  • 在 mvn 命令中指定 pom.xml 并混合其他项目的目标

    我有多个问题 我可以在 mvn 命令中指定 pom xml 吗 在当前项目上执行 mvn 命令时 我可以混合另一个项目的目标吗 例如 mvn clean otherproject comple otherproject install ot
  • Maven 中不同配置文件的不同 SCM

    在我的项目中 我们必须使用 maben build number 插件来构造 jar 的最终名称 为此我们使用 SCN 的修订版 因此我们需要 SCM 但是我们在无法直接访问的受控环境和本地测试环境上有两个 SVN 因此对于我们的 poup

随机推荐

  • 我应该使用哪个(对于基于 python 的网站)? sass、compass、switchcss...替代品? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 组织 CSS 的最佳系统是什么 我正在制作几个使用 python 作为后端脚本的网站 我有兴趣使用一些东西来帮助我组织长 css 脚本 我
  • 使用 Jackson 反序列化包装列表

    我有一个像这样的 JSON 对象 geonames countryId 2017370 adminCode1 73 countryId 2027370 adminCode1 71 我怎样才能反序列化这个对象DIRECTLY to List
  • 如何在 Spring 应用程序上下文中将 Class 设置为属性值?

    有没有办法配置 spring 应用程序上下文 以便它将使用 Class 类型的值初始化 setter 我需要初始化该结构 Map
  • 将 RTSP 流转换为虚拟网络摄像头

    我正在尝试使用来自 IP 摄像机的 RTSP 流作为 Windows 上各种应用程序 例如 Skype Zoom Microsoft Teams 等 的视频输入源 到目前为止我找到的唯一解决方案是使用 webcam 7 http www w
  • std::weak_ptr:锁或shared_ptr构造函数?

    似乎有两种方法可以暂时获取 a 所指向的资源的所有权weak ptr Use lock 通过weak ptr to a shared ptr构造函数 这两者都会产生一个shared ptr 锁返回一个nullptr在这种情况下weak pt
  • 动态设置线性布局背景

    我想通过以下方式动态设置线性布局背景 通过 XML 解析从 Web url 获取图像 然后将该图像存储到 SD 卡中 现在图像已保存到 SD 卡中 将该图像设置为应用程序中的线性布局背景 现在我陷入了第三步 有人可以帮忙吗 用这个 Bitm
  • 在Thread中使用EnterCriticalSection更新VCL标签

    我是线程新手 我正在使用一个第三方库 该库使用线程 有时会调用我提供的过程 当线程调用我的过程时 如何更新 TLabel Caption 如果我在其他地方调用了InitializeCriticalSection 它是否像 EnterCrit
  • 光源设置不正确

    我有这段代码 但灯光似乎无法正常工作 当我渲染对象时它很暗 然后当我旋转它时 光源似乎也旋转了 我不知道问题出在哪里 我尝试修改灯光模型但仍然不起作用 这是程序 while glfwWindowShouldClose window Rend
  • Javascript递归设置超时

    我刚刚开始研究 javascript 所以希望这会是简单的事情 我想制作自动播放的图像幻灯片 这非常简单 并且有一些关于它的教程 但由于某种原因我无法让它工作 这就是我所拥有的 var image1 new Image var image2
  • WPF列表框滚动到底部

    我使用 ObservableCollection 作为 listBox 组件的 ItemSource 但控件的行为对我来说并不合适 我已经向下滚动到这件事在我的收藏中第一次出现 但不是最后一次 示例列表为 1 1 2 3 4 5 6 7 8
  • XSLT PI 和样式表参数

    给定一个需要参数的 XSLT 1 x 样式表 是否有任何方法可以将其与指定参数值的 XML 文档关联起来 我阅读了样式表 PI 的 W3C 规范文档 并得到了答案是 否 的印象 但当我读完时 我遇到了急性 BNF 中毒的情况 因此可能错过了
  • 行主与列主矩阵乘法

    我目前正在开发一个 C 程序 尝试计算矩阵乘法 我通过循环第二个矩阵的每一列来完成此任务 如下所示 我已将大小设置为 1000 for i 0 i
  • 如何找出坐标之间的距离?

    我想让它显示两个 CLLocation 坐标之间的距离 有没有办法在没有复杂数学公式的情况下做到这一点 如果没有 你会如何用公式来做呢 CLLocation 有一个 distanceFromLocation 方法 因此给定两个 CLLoca
  • Java HTML->PDF 解决方案?

    我目前正在用 Java 构建一个基于 PDF 的报告 我已经研究过 iText 和 BIRT 但似乎需要付出很大的努力来学习他们的 API 我试图找到一个解决方案 让我可以在 HTMl 中生成报告 我已经知道的东西 并将其输出为 PDF 谁
  • AngularJS 和解析正文

    我正在尝试使用 AngularJS 创建一个网站 由用户生成的内容驱动 可以使用自定义标签 例如 js code js code 以不同方式显示这些部分内的文本 API 向我发送一个包含标签的正文文本字符串 以便在客户端上进行解析 如果我使
  • 在symfony2中实现日志系统

    我想将一个日志文件集成到我用 symfony2 制作的网站中 我的意思是我想保存用户的每个操作 点击按钮 将请求保存到数据库 那可能吗 有人对此有什么想法吗 登录 Symfony 2 是的 文档中确实描述了这一点 Symfony 2 Coo
  • 移动应用程序中的幽灵点击

    有很多关于幽灵点击的材料 帖子 我正在努力更好地理解它 所以我的理解是 幽灵点击的原因是click触摸事件后约 300 毫秒调度事件 jQuery Mobile 建议 http jquerymobile com test docs api
  • JQuery 文本编辑器粘贴而不带格式

    我在我的网站上使用插件 JQuery 文本编辑器 有时 当用户将预先格式化的 HTML 文本从另一个网站复制并粘贴到插件的文本框中时 它会错误地呈现并中断部分字符串 从数据库检索后可以看到损坏的文本 如果您手动编写此文本 或从框中复制并重新
  • 无法禁用 UITextView 中 UIMenuController 中的默认 UIMenuItems

    我正在尝试配置 U IMenuController 的菜单项以获得类似于 Medium 的 iOS 功能的功能 有各种线程致力于此特定任务 但是尽管有数以万计的视图和不同的结果 包括它不适用于足够多的人 似乎没有一个始终有效的解决方案对于
  • 从 XJC 中导入的架构解析类型定义失败

    我使用 JAXB 获得了此 API 以便通过命名引用方便地使用由 XJC XML 到 Java 编译器从 XML 模式生成的对象模型 它通过各种背景魔法和反射抽象了 JAXB 上下文的创建和查找 ObjectFactory 方法 其基本要点