草庐IT

jaxb-episode

全部标签

java - 使用 JAXB Marshaller 处理 XML 转义字符(例如引号)

我需要使用JAXB编码器(JAXB2.2版)将XMLjava对象序列化为XML文件。现在在xml对象中,我有一个包含Stringvalue的标签,这样:"**"done"**"现在您可以看到该字符串值再次包含标签。我希望在xml文件中以相同的方式编写它。但是JAXBMarshaller会转换这些值,例如:"&"lt;YYYYY"&"gt;"&"#xD;done...&等等我无法使用JAXB2.2分别处理这些转义字符有可能吗?在这方面的任何帮助都会很棒..提前致谢,阿比纳夫·米什拉 最佳答案 通过为JAXB编码器设置以下属性来完成:m

java - 解码非根元素时的 JAXB 模式验证

当您使用JAXB解码整个XML时,您可以设置XML架构以在解析期间启用验证://javax.xml.validation.Schemaschema=...jaxbUnmarshaller=JAXBContext.newInstance(SomeRootType.class).createUnmarshaller();jaxbUnmarshaller.setSchema(schema);另一方面,当您从XML中逐个解码NestedObjest列表时(例如,为了减少内存使用),此方法会失败(因为Schema只接受root)并出现异常:org.xml.sax.SAXParseExceptio

java - 更改生成的 jaxb 类的包

我在wsdl中定义了以下数据类型:我希望MyEnum属于它自己的包。所以,我使用了一个jaxws绑定(bind)文件,使用XPATH遍历schema和jaxb绑定(bind)来设置包,如下:现在,schemaBindings中设置的路径采用-并将该架构/目标namespace中的所有数据类型放入包abra.ca.dabra中。但是,我似乎无法设置MyEnum的包——这正是我想要的。我使用cxf的wsdl2java来提供绑定(bind)文件。我错过了什么吗? 最佳答案 我会用这样的东西来尝试:false更准确地说,您应该使整个wsdl

java - JAXB @XmlSeeAlso 导致与域对象的紧密耦合

我正在使用JAXB绑定(bind)直接解码到我的领域层对象,这些对象是生成的网络服务类型的子类。这是一个很好的解决方案,因为我可以覆盖方法并提供编写自定义逻辑等。但是,XJC编译器坚持将@XmlSeeAlso({MySubclass.class})注释放在所有生成的类上,这导致它们与我的域对象紧密耦合。这显然是不可取的,并且会导致我的项目之间出现各种引用问题,我不会在这里讨论这些问题。是否可以生成没有@XmlSeeAlso注释的类?解码到子类的实际工作似乎发生在ObjectFactory类中。是否可以省略jaxb绑定(bind),并为每个应用程序替换自定义ObjectFactory?这

java - Spring WS 和 JAXB - 配置 SOAPMessageDispatcher、DefaultMethodEndpointAdapter 和 MarshallingPayloadMethodProcessor

在使用Spring-WS时,配置非常少,因为我一直在使用注释。最近我一直在尝试测试如何在SOAP响应中包含附件并使其正常工作,我最终得到了以下配置。通过以上,我可以生成带有附件的SOAP响应。问题是我真的不明白发生了什么。(即上面的配置做了什么来启用MTOM附件。启用附件:为什么我需要配置JAXB编码器?如果没有此配置,所有不使用附件的Web服务都可以正常工作。我所要做的就是使用@EndPoint注释。非附件web服务的请求/响应对象也是基于JAXB的,所以这表明我可能没有做对(即使它有效)。上面配置中显示的messageReceiver和defaultmethodEndpointAd

java - Jaxb 在解码时忽略 namespace

我使用Jaxb2和Spring。我正在尝试解码一些由我的两个客户发送的XML。到现在为止,我只需要处理一个发送这样一些xml的客户:[...]像这样绑定(bind)到POJO:@XmlType(name="",propOrder={"bar"})@XmlRootElement(name="Foo")publicclassFoo{@XmlElement(name="Bar")privateStringbar;[...]}我发现之前的开发人员在解码器中对命名空间进行了硬编码以使其正常工作。现在,第二个客户发送相同的XML,但更改了命名空间![...]显然,解码器无法解码,因为它需要一些{c

java - JAXB 编辑列表 setter/getter ?

我有XSD文件形式的数据模型,然后使用命令行从xjc生成相应的Java文件。当我从XSD生成JAXB类时,List类型元素获取为它们生成的getter方法(没有相应的setter方法),如下所示:publicListgetElement3(){if(element3==null){element3=newArrayList();}returnthis.element3;}几乎每个从List类型的XSD生成的文件中都有很多字段。用例:现在,我不希望通过null检查生成getter。我的应用程序代码具有经常调用每个字段的getter的逻辑,这导致它们初始化为emptyList。然后在编码时

java - JAXB 编码列表映射

我有一张需要编码的列表图。我创建了XML适配器,但在创建JAXB上下文时,我一直收到java.util.Listisaninterface,andJAXBcan'thandleinterfaces.。我应该如何编码列表映射?这是我的代码:@XmlRootElement(name="myClass")publicclassMyClass{@XmlJavaTypeAdapter(MapOfListsAdapter.class)protectedMap>expectedResults;我已经为map编写了适配器MapOfListsAdapater:publicclassMapOfListsA

java - JAXB异常 : not a valid property on class

我们有一个应用程序需要使用外部网络服务。为此,我们使用cxf-codegen-plugin插件提供的wsdl2java目标通过Maven从WSDL生成了一组Java工件。在应用程序中,我们希望在运行时设置用于Web服务调用的端点(以适应测试环境中的不同Web服务端点URL),因此我们编写了如下代码来为我们执行此操作:privateTcreateServiceObject(finalClassp_seiClass)throwsMalformedURLException{finalServiceserviceFactory=Service.create(newURL(wsdlLocatio

java - 如何让两个不同的端点具有不同的命名空间和相同的 JAXB 类?

我用的是springsoapws.我有以下JAXB域类对应于复杂类型@XmlAccessorType(XmlAccessType.FIELD)@XmlType(name="",propOrder={"reference","reason"})@XmlRootElement(name="request-message")publicclassRequestMessageType{@XmlElement(name="reference",required=true)protectedStringreference;@XmlElement(name="reason")protectedStr