gpt4 book ai didi

java - XJB 和 JAXB 绑定(bind)在具有相同名称的 simpleType 上

转载 作者:太空宇宙 更新时间:2023-11-04 12:37:59 30 4
gpt4 key购买 nike

我正在尝试使用 jaxb 和 spring 生成 JAVA 代码,但是当我有一个包含 2 个具有相同名称但位于不同命名空间的 simpleType 的 wsdl 文件时,我无法让它工作。有谁知道我该如何解决这个问题?

我一直在尝试 jaxb:factoryMethod 标记,但无法获得正确的语法。但也许有更简单的方法?

绑定(bind).xjb

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<jaxb:bindings
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:annox="http://annox.dev.java.net"
xmlns:inheritance="http://jaxb2-commons.dev.java.net/basic/inheritance"
xsi:schemaLocation="http://java.sun.com/xml/ns/jaxb http://java.sun.com/xml/ns/jaxb/bindingschema_2_0.xsd"
jaxb:extensionBindingPrefixes="xjc annox"
version="2.1"
targetNamespace="http://com.company/generated"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">

<jaxb:globalBindings>
</jaxb:globalBindings>

<jaxb:bindings
node="/wsdl:definitions/wsdl:types/xs:schema[namespace::*[.='http://com.company/storetaxinformation']]/xs:simpleType[@name='TypeOfTax']"
schemaLocation="../../../target/classes/disb.wsdl">
<annox:annotateClass>@javax.xml.bind.annotation.XmlRootElement(name="TypeOfTaxStoreTax")</annox:annotateClass>
</jaxb:bindings>

<jaxb:bindings
node="/wsdl:definitions/wsdl:types/xs:schema[namespace::*[.='http://com.company/gettaxinformation']]/xs:simpleType[@name='TypeOfTax']"
schemaLocation="../../../target/classes/disb.wsdl">
<annox:annotateClass>@javax.xml.bind.annotation.XmlRootElement(name="TypeOfTaxInfo")</annox:annotateClass>
</jaxb:bindings>
</jaxb:bindings>

错误日志

[ERROR] Error while generating code.Location [ file:/C:/wsdl/disb.wsdl{49,52}].
com.sun.istack.SAXParseException2; systemId: file:/C:/wsdl/disb.wsdl;
lineNumber: 49; columnNumber: 52; Two declarations cause a collision in the ObjectFactory class.

最佳答案

不,@XmlRootElement 不会有帮助。它与 ObjectFactory 中的方法名称有关。

您确定是简单类型导致了冲突吗? XJC指向ObjectFactory中的方法,因此它应该是全局元素,而不是简单类型

以下是 factoryMethod 自定义的示例:

<jaxb:bindings 
schemaLocation="http://schemas.opengis.net/citygml/texturedsurface/1.0/texturedSurface.xsd"
node="/xs:schema">
<jaxb:bindings node="xs:element[@name='_Appearance']">
<jaxb:factoryMethod name="AAppearance"/>
</jaxb:bindings>
</jaxb:bindings>

您需要找出哪些元素会导致碰撞并对其进行自定义。不是简单类型。

关于java - XJB 和 JAXB 绑定(bind)在具有相同名称的 simpleType 上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37110299/

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