У меня есть десятки и десятки .xsd
файлов, для которых я хочу автоматически сгенерировать код.У пары файлов есть повторяющиеся имена, которые конфликтуют, когда я пытаюсь сгенерировать их все одновременно.
Я сосредотачиваюсь только на том, чтобы заставить 2 из них работать.
Когда я получу эти 2, я исправлю остальное.Но сейчас я сосредоточился только на двух из этих файлов.Я не контролирую их, они принадлежат поставщику и следуют «стандарту» , поэтому их редактирование не является вариантом по нескольким причинам.
IЯ использую 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
.
Как настроить привязкуили игнорировать дублирующиеся конфигурации, сопоставить их с отдельными пакетами или сопоставить их с существующими реализациями?