gpt4 book ai didi

java - XJC 插件定制

转载 作者:行者123 更新时间:2023-11-30 10:41:55 28 4
gpt4 key购买 nike

我正在开发使用定制的 XJC 插件。问题是我得到了

[ERROR] compiler was unable to honor this myPlugin:testAnnotation customization. It is attached to a wrong place, or its inconsistent with other bindings.
line 16 of file:/C:/JaxbPlugin_jar/withInternalBinding/sampleInlineAnnotation.xsd

[ERROR] (the above customization is attached to the following location in the schema)
line 13 of file:/C:/JaxbPlugin_jar/withInternalBinding/sampleInlineAnnotation.xsd

这是我的架构:

<?xml version='1.0' ?>
<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:myPlugin="http://www.example.org"
targetNamespace="http://www.books.org"
xmlns="http://www.books.org"

xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
jaxb:extensionBindingPrefixes="xjc myPlugin"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
jaxb:version="2.1">

<xs:element name="a" type="xs:string">
<xs:annotation>
<xs:appinfo>
<myPlugin:testAnnotation>test</myPlugin:testAnnotation>
</xs:appinfo>
</xs:annotation>
</xs:element>
</xs:schema>

我没有使用外部绑定(bind)配置(没有 -b 选项)所以

  1. “它附在了错误的地方”
  2. 所以它与其他绑定(bind)不一致”- 我只有一个自定义并且我不使用外部绑定(bind)文件

看来是<myPlugin:testAnnotation>test</myPlugin:testAnnotation>在错误的地方。但是它在一个注解标签里面,我不知道为什么它不起作用。

最佳答案

简短的回答是,您可能做的每件事都是正确的。您只需执行插件实现的下一步,并告诉 XJC 您看到了定制。

只要没有插件“确认”自定义,您就会收到此错误。要处理自定义,您通常需要重写几个插件方法,然后在处理自定义时调用 markAsAcknowledged

@Override
public List<String> getCustomizationURIs() {
List<String> uris = new ArrayList<>();
uris.add(...);
return uris;
}

@Override
public boolean isCustomizationTagName(String nsUri, String localName) {
return ...;
}


for (CPluginCustomization customization : propertyInfo.getCustomizations()) {
if (isCustomizationTagName(customization.element.getNamespaceURI(),
customization.element.getLocalName())) {
// Apply the customization.
...

// Tell XJC that the customization was consumed.
customization.markAsAcknowledged();
}
}

错误位置措辞背后的想法是,插件可能只在“属性”级别寻找自定义,但文档在“类”级别(例如,在复杂类型)。在这种情况下,插件代码会错过它(因为它没有在 classInfo 上寻找它),因此它不会得到确认。

关于java - XJC 插件定制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38338697/

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