Java JAXB2.1-定制xs:any绑定
我想使用JAXB2.1XJC从xsd生成java代码。我提供了一个xsd模式,无法更改它。我想在从xml模式生成java类时使用xjc:simple模式 xsd中有以下元素:Java JAXB2.1-定制xs:any绑定,java,jaxb,xsd,xjc,Java,Jaxb,Xsd,Xjc,我想使用JAXB2.1XJC从xsd生成java代码。我提供了一个xsd模式,无法更改它。我想在从xml模式生成java类时使用xjc:simple模式 xsd中有以下元素: <xs:any namespace="##other" processContents="lax"/> 但是当我使用简单绑定模式时,我有: @XmlAnyElement protected Element any; 我试图找到一个解决方法,但到处都说xs:any是在没有配置的情况下处理的。将xs:any元素
<xs:any namespace="##other" processContents="lax"/>
但是当我使用简单绑定模式时,我有:
@XmlAnyElement
protected Element any;
我试图找到一个解决方法,但到处都说xs:any是在没有配置的情况下处理的。将xs:any元素作为java.lang.Object的唯一方法是在xsd中删除xjc:simple或将processContents更改为“strict”。这些选项现在对我来说都是不可接受的,因为我无法更改xml模式,并且我有一些依赖于使用xjc:simple模式生成的java类的遗留代码,但现在我需要使用xs:any元素,并且我希望避免使用org.w3c.dom.element对象
任何帮助都将不胜感激。谢谢。您可以从中使用。这允许您自定义lax/跳过/严格通配符绑定模式:
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
xmlns:wildcard="http://jaxb2-commons.dev.java.net/basic/wildcard"
jaxb:version="2.1"
jaxb:extensionBindingPrefixes="wildcard">
...
<xs:complexType name="issueJIIB10Type" mixed="true">
<xs:annotation>
<xs:appinfo>
<wildcard:lax/>
</xs:appinfo>
</xs:annotation>
<xs:complexContent mixed="true">
<xs:extension base="xs:anyType"/>
</xs:complexContent>
</xs:complexType>
...
</xs:schema>
...
...
您不必为此更改模式,您可以通过绑定文件使用此定制。我甚至阅读了有关此插件的文章,但不确定这是否是正确的方向。谢谢你的回复-我会尽快验证,只要我有一些空闲时间在项目中。谢谢lexicore,这个插件几乎是我所需要的。我这么说几乎是因为我找不到一种方法将所有xs:any全局更改为java.lang.Object。每种情况都必须单独配置,这有点烦人。对于可能需要通过绑定文件对其进行配置的任何人的记录(plugin doc根本不包括这种情况),您必须直接指向复杂类型,例如:@Arek请在JAXB2 Basics中提交一个问题,这是可行的。@Arek完成,请检查当前快照(0.6.4-snapshot)。测试项目:完美-这正是我想要的。谢谢你。
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
xmlns:wildcard="http://jaxb2-commons.dev.java.net/basic/wildcard"
jaxb:version="2.1"
jaxb:extensionBindingPrefixes="wildcard">
...
<xs:complexType name="issueJIIB10Type" mixed="true">
<xs:annotation>
<xs:appinfo>
<wildcard:lax/>
</xs:appinfo>
</xs:annotation>
<xs:complexContent mixed="true">
<xs:extension base="xs:anyType"/>
</xs:complexContent>
</xs:complexType>
...
</xs:schema>