主题中的问题:在XSD中定义嵌套在同名元素中的元素是否有效?例如,以下片段是否正确?如果是这样,你如何让xjc正确地为它生成类?我遇到编译错误,例如静态类TypeOfAction已定义(基本上我会生成两个同名的嵌套静态类)。 最佳答案 这个片段很好。只有全局元素需要具有唯一的限定名称(命名空间和本地名称的组合)。来自JDK7的XJC可以很好地处理您的代码段。我的示例XSD生成正确的类。但它无法编译,因为Java不允许声明与外部类同名的内部类。尝试使用xjc绑定(bind)或内联模式注释更改生成的类型名称。你可以找到例子here.示例
我知道我可以使用@XmlSchema来做到这一点,但问题是我们在同一个包中有一个类需要其命名空间与package-info.java上定义的不同。所以我们改为在@XmlRootElement中声明命名空间(当然同时仍然有@XmlSchema)。但是这样做将不允许我们设置类的elementFormDefault。将类移动到不同的包不是一种选择。基本上,我只想覆盖这个特定类的命名空间。 最佳答案 长话短说当elementFormDefault=XmlNsForm.QUALIFIED在@XmlSchema上设置时,您可以通过使用@XmlT
我正在尝试将xml解析为java对象,我已阅读并实现了以下教程:http://www.vogella.com/articles/JAXB/article.html(完美运行)但是当我创建自己的类时(类似于教程中的类)我得到:线程“主”com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException中的异常:1次IllegalAnnotationExceptions类有两个同名属性“clienteList”除非我在Clientes类上使用@XmlAccessorType(XmlAccessType.FIELD)但在教程中未被
我正在为来自xsd模式的JAXB注释类使用XJC实用程序,我有点惊讶并且不明白为什么会生成@XmlElementRefs。一切都发生在以下xsd片段中(此处省略命名空间)List<Employee>List<Manager>List<TimeStamp>xjc生成的java类如下:packagecom.pif.check;importjava.util.ArrayList;importjava.util.List;importjavax.xml.bind.JAXBElement;importjavax.xml.bind.annotation.XmlA
我有一个包含以下内容的XSD文件:当我用xjc生成java代码时,它会产生这个:publicclassCertificate{@XmlElement(required=true,type=String.class)@XmlJavaTypeAdapter(X509CertificateAdapter.class)@XmlSchemaType(name="base64Binary")protectedX509Certificatecertificate;....}适配器工作正常。我的问题是为什么@XmlElement(required=true,type=String.class)?为什么
我不明白我做错了什么。我想使用JAXB解码一个xml,但我注意到没有调用setter方法。我正在使用Java1.5。Attribute.java类中的Getters和Setters-工作正常,但在Configuration.java类中-Setter方法不调用。你能告诉我哪里错了吗?@XmlRootElement(name="configuration")@XmlAccessorType(XmlAccessType.NONE)publicclassConfiguration{publicListgetItems(){returnnewArrayList(getMap().values(
我使用mavenJaxB插件从XSD生成源代码。插件详情如下,org.jvnet.jaxb2.maven2maven-jaxb2-plugin0.8.3XSD中定义的枚举有两个值,生成的代码在枚举值的工作边界之间添加了下划线。例如:“SimpleText”在枚举中作为SIMPLE_TEXT出现。生成的代码,@XmlType(name="MyEnum")@XmlEnumpublicenumMyEnum{@XmlEnumValue("SimpleText")SIMPLE_TEXT("SimpleText"),@XmlEnumValue("ComplexText")COMPLEX_TEXT(
我有一个类注释如下:@XmlRootElement(name="response")@XmlType(propOrder={"paymentid","result","responsecode","authorizationcode","merchantorderid","rrn","cardcountry","cardtype"})publicclassMOTOResponseIn{...}映射的XML的根元素旁边也可能是错误响应。我怎样才能注释类以便允许两个根元素? 最佳答案 在这种情况下不能使用@XmlRootElement。
在处理具有相当复杂的XML结构的Web服务响应时,我只对非常小的信息子集感兴趣。让我们考虑在这种情况下必须使用usingJAXB。例如,假设我只对检索d感兴趣(可以将其建模为单个JAXBbean):ab1c1c2b2d忽略其他所有内容但检索d的最快推荐方法是什么? 最佳答案 注意:我是EclipseLinkJAXB(MOXy)JAXB2(JSR-222)专家组的领导和成员。有几种不同的方法可以处理这个用例:选项#1-StreamFilter任何JAXB实现您可以使用StAXXMLStreamReader和StreamFilter来过
我是JAXB的新手,现在正为一个问题而苦恼。也许你能帮帮我。我有以下代码:@XmlRootElementpublicclassStudentsimplementsSerializable{privatestaticfinallongserialVersionUID=1L;privateListpersonList;privateintid;//gettersandsettersfortheattributes}和@XmlRootElementpublicclassPersonimplementsSerializable{privatestaticfinallongserialVersi