我有很多.xsd
文件要为其自动生成代码。当我尝试同时生成所有文件时,其中两个文件具有重复的名称冲突。
我专注于尝试让其中的2个起作用。
当我使这2个工作正常时,我将修复其余的工作。但是我现在只关注其中两个文件。我无法控制它们,它们来自供应商,并且遵循 “标准” ,因此出于多种原因,
不能对其进行编辑 。
我正在使用maven-jaxb2-plugin
来处理这些文件。
我已binding.xjb
按照mat b
答案中的链接以及在网上找到的其他说明中的建议添加了一个文件。但是我收到以下错误,没有输出。
<?xml version="1.0" encoding="UTF-8"?>
<jxb:bindings version="2.1"
xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance"
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xsi:schemaLocation=" http://java.sun.com/xml/ns/jaxb http://java.sun.com/xml/ns/jaxb/bindingschema_2_0.xsd">
<jxb:bindings schemaLocation="mac-3.4.xsd">
<jxb:schemaBindings>
<jxb:package name="my.company.mac"/>
</jxb:schemaBindings>
</jxb:bindings>
<jxb:bindings schemaLocation="mac-stylesheet-3.4.xsd">
<jxb:schemaBindings>
<jxb:package name="my.company.stylesheet"/>
</jxb:schemaBindings>
</jxb:bindings>
</jxb:bindings>
给出以下错误
[ERROR] Error while parsing schema(s).Location [ file:/C:/Users/Jarrod%20Roberson/Projects/spa-tools/spa-lib/src/main/sc
hema/mac-stylesheet-3.4.xsd{165,33}].
org.xml.sax.SAXParseException: 'halign' is already defined
令人讨厌的元素是:(还有很多其他元素,这只是第一个发生冲突的元素)
<xsd:simpleType name="halign">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="left" />
<xsd:enumeration value="center" />
<xsd:enumeration value="right" />
</xsd:restriction>
</xsd:simpleType>
并且在每个.xsd
文件中都是相同的,我该如何解决这种重复,要么只生成一个类,要么将每个类生成到各自的包名称空间中?
这不是像这样唯一重复的元素,有很多元素,因此仅尝试从文件中删除它们也不是一种选择。
这halign
是在多个.xsd
文件中,我想将它们放在单独的程序包中,或者能够告诉编译器使用生成的第一个文件。
这是我尝试外部.xjb
文件之前开始的地方,只需在package
中指定即可pom.xml
。
如何配置绑定以忽略重复的配置,将它们映射到单独的程序包或将它们映射到现有的实现?
我对此有一个中途解决方法,但是这非常耗时。我必须<execution/>
为每个具有重复条目的文件创建一个单独的文件。
<executions>
<execution>
<id>jaxb-mac</id>
<phase>generate-sources</phase>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<forceRegenerate>true</forceRegenerate>
<generatePackage>my.company.mac</generatePackage>
<schemaDirectory>src/main/schema</schemaDirectory>
<schemaIncludes>
<include>mac-3.4.xsd</include>
</schemaIncludes>
</configuration>
</execution>
<execution>
<id>jaxb-stylesheet</id>
<phase>generate-sources</phase>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<forceRegenerate>true</forceRegenerate>
<generatePackage>my.company.stylesheet</generatePackage>
<schemaDirectory>src/main/schema</schemaDirectory>
<schemaIncludes>
<include>mac-stylesheet-3.4.xsd</include>
</schemaIncludes>
</configuration>
</execution>
这个<forceRegenerate>true</forceRegenerate>
很重要,或者只有第一个<execution/>
会运行,其余的会认为没有必要运行,因为我正在生成同一个目录。
我仍然希望使用劳动强度较小的解决方案来处理重复项。
我认为,如果我将第一个主.xsd制作成一个单独的模块,并将其内置到自己的.jar文件中,那么我可以使用<episode/>
标签,并让它跳过一遍又一遍地生成相同的重复元素,因为它们的定义相同。
从那以后,我决定尽可能放弃XML并完全放弃JAXB。 从此编辑开始,有更新更好的方法来解析XML并将其映射到对象。
我知道我可以在一个jar中编译多个xsd文件。我尝试过使用不同的名称空间,这只让我完成了一半的目标。通过这种方式,我可以解析正确的模式,但我希望这对将接收我解析的xmlBeans对象的用户是透明的。 他们不必知道系统上当前存在哪个版本的xml文件。我需要每个xsd版本都有一个超级类来实现这一点。 这可以用xmlBeans完成吗?
问题内容: 我有一个.csv文件,如下所示: 我必须从文件中删除重复的电子邮件(整行)(即,上面示例中包含的行之一)。如何仅在字段1(用逗号分隔)上使用?根据,没有列选项。 我尝试了一些东西,但是没有用。 问题答案: 为了独特 所以逗号是定界符 对于关键字段1 测试结果:
问题内容: 假设我有以下代码: 这段代码的问题在于,协程内部的循环永远不会完成第一次迭代,而大小会不断增加。 为什么会这样发生,我该怎么解决? 我无法摆脱单独的线程,因为在我的真实代码中,我使用了单独的线程与串行设备进行通信,而且我还没有找到使用的方法。 问题答案: 不是线程安全的,因此您不能直接在多个线程中直接使用它。相反,您可以使用,它是提供线程感知队列的第三方库: 还有(全披露:我写了它),
问题内容: 我有一个这样的html代码段: html中此元素的唯一唯一标识是attribute ,因此我想使用 某种 Pythonselenium 方法 来定位它,如下所示: 我已经检查了selenium(python)文档以查找元素, 但是没有获得关于如何通过attr 定位此elem的线索。有没有在pythonselenium中找到该元素的明确方法? 问题答案: 您可以 通过xpath 获取它并
我尝试使用thajaxb来整理xml,我使用xjc命令从xsd文件order.xsd生成java类 我得到了许多带注释的类,但没有一个@XmlRootElement(name="Order"),也没有名为Order的类
我得到了如下html代码片段: 该元素在html中唯一唯一的标识是属性,因此我想使用类似以下的Python selenium方法来定位它: 我已经查看了selenium(python)文档以查找元素,但没有找到如何通过attr来定位此元素的线索。在python selenium中是否有明确的方法来定位这个元素?