Tôi có hàng chục và hàng chục .xsd
tệp mà tôi muốn tự động tạo mã cho. Một vài tệp có tên trùng lặp xung đột khi tôi cố gắng tạo tất cả các tệp đó cùng một lúc.Có cách nào để xử lý các định nghĩa phần tử trùng lặp trên nhiều tệp .xsd trong JAXB không?
Tôi đang tập trung vào việc cố gắng làm cho 2 trong số này hoạt động.
Khi tôi nhận được 2 công việc này, tôi sẽ sửa phần còn lại. Nhưng bây giờ tôi chỉ tập trung vào 2 trong số những tệp này. Tôi không kiểm soát được họ, họ đến từ một nhà cung cấp và tuân theo một "" tiêu chuẩn "", do đó, chỉnh sửa chúng không phải là một tùy chọn vì nhiều lý do.
Tôi đang sử dụng maven-jaxb2-plugin
để xử lý các tệp này.
Tôi đã thêm tệp binding.xjb
như được đề xuất trong liên kết trong câu trả lời của mat b
và các hướng dẫn khác mà tôi đã tìm thấy trên web. Nhưng tôi nhận được các lỗi sau, không có đầu ra.
<?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>
cung cấp cho các lỗi sau
[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
Yếu tố vi phạm là: (có rất nhiều người khác đây chỉ là một trong những đầu tiên đụng độ)
<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>
Và là giống hệt nhau trong mỗi các tệp .xsd
, làm cách nào để giải quyết sự trùng lặp này với chỉ một lớp đang được tạo hoặc mỗi lớp được tạo trong không gian tên gói của riêng chúng?
Đây không phải là phần tử trùng lặp duy nhất như thế này, có rất nhiều phần tử, vì vậy, việc cố gắng xóa chúng khỏi tệp cũng không phải là một tùy chọn.
halign
này nằm trong nhiều tệp .xsd
và tôi muốn đặt chúng trong gói riêng lẻ của chúng hoặc có thể yêu cầu trình biên dịch sử dụng trình biên dịch đầu tiên được tạo.
Đây là nơi tôi bắt đầu trước khi tôi thử tệp .xjb
bên ngoài, bằng cách chỉ định package
trong pom.xml
.
Làm cách nào để định cấu hình ràng buộc bỏ qua các cấu hình trùng lặp, ánh xạ chúng thành các gói riêng biệt hoặc ánh xạ chúng tới các triển khai hiện có?
' 'không còn có sẵn trong' maven-jaxb2-plugin: 2.2'. –
OrangeDog