gpt4 book ai didi

JAXB 编译问题 - [错误] 属性 "Any"已定义

转载 作者:行者123 更新时间:2023-12-04 16:40:16 25 4
gpt4 key购买 nike

我正在尝试为 xccdf-1.1.4.xsd 创建 JAXB 绑定(bind),这是可以从 XCCDF Schema Location 获取的标准模式

我目前使用 EclipseLink MOXy 作为我的 JAXB 实现,因为我喜欢它也可以生成 JSON 绑定(bind)的事实。

我修复了几个使用外部绑定(bind) XML 遇到臭名昭著的“[ERROR] Property “value” is already defined”错误的情况,现在我遇到了一个错误

[ERROR] Property "Any" is already defined. Use <jaxb:property> to resolve this conflict.
line 441 of file:/home/dchu/Playground/Java/eclipselink_moxy/xccdf_1.1.4/xccdf-1.1.4.xsd

[ERROR] The following location is relevant to the above error
line 444 of file:/home/dchu/Playground/Java/eclipselink_moxy/xccdf_1.1.4/xccdf-1.1.4.xs

下面是 XML 模式中发生错误的行的片段。
<xsd:sequence>
<xsd:choice minOccurs="1" maxOccurs="1">
<xsd:any namespace="http://purl.org/dc/elements/1.1/"
minOccurs="1" maxOccurs="unbounded"/>
<xsd:any namespace="http://checklists.nist.gov/sccf/0.1"
processContents="skip"
minOccurs="1" maxOccurs="unbounded"/>
</xsd:choice>
</xsd:sequence>

有谁知道这里可能出了什么问题?谢谢!

最佳答案

您可以使用外部绑定(bind)文件来重命名任何属性之一。

绑定(bind).xml

<jxb:bindings xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:jxb="http://java.sun.com/xml/ns/jaxb" version="2.1">

<jxb:bindings schemaLocation="schema.xsd">
<jxb:bindings
node="//xsd:complexType[@name='foo']/xsd:sequence/xsd:choice/xsd:any[@namespace='http://checklists.nist.gov/sccf/0.1']">
<jxb:property name="any2" />
</jxb:bindings>
</jxb:bindings>

</jxb:bindings>

XML 模式 (schema.xsd)

下面是您的 XML 模式的简化版本:

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org/schema"
xmlns="http://www.example.org/schema"
elementFormDefault="qualified">

<xsd:complexType name="foo">
<xsd:sequence>
<xsd:choice minOccurs="1" maxOccurs="1">
<xsd:any namespace=""
minOccurs="1" maxOccurs="unbounded" />
<xsd:any namespace="http://checklists.nist.gov/sccf/0.1"
processContents="skip" minOccurs="1" maxOccurs="unbounded" />
</xsd:choice>
</xsd:sequence>
</xsd:complexType>

</xsd:schema>

许江城电话

下面是如何利用外部绑定(bind)文件进行 XJC 调用。
xjc -b binding.xml schema.xsd

生成类 (Foo)

package org.example.schema;

import java.util.*;
import javax.xml.bind.annotation.*;
import org.w3c.dom.Element;

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "foo", propOrder = {
"any",
"any2"
})
public class Foo {

@XmlAnyElement(lax = true)
protected List<Object> any;
@XmlAnyElement
protected List<Element> any2;


public List<Object> getAny() {
if (any == null) {
any = new ArrayList<Object>();
}
return this.any;
}

public List<Element> getAny2() {
if (any2 == null) {
any2 = new ArrayList<Element>();
}
return this.any2;
}

}

关于JAXB 编译问题 - [错误] 属性 "Any"已定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13610217/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com