我有一个这样的XSD:
<xs:element name="Measure">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" ref="Measure_Id"/>
<xs:choice minOccurs="1" maxOccurs ="4">
<xs:element ref="Measure_Value"/>
<xs:element ref="Measure_Value_Max"/>
<xs:element ref="Measure_Value_Min"/>
<xs:element ref="Measure_Value_Average"/>
</xs:choice>
<xs:element minOccurs="0" ref="Files"/>
</xs:sequence>
</xs:complexType>
</xs:element>
特别是,使用
com.sun.xml.bind.v2.runtime.IllegalAnnotationsExceptions: 1次IllegalAnnotationExceptions没有ObjectFactory与@XmlElementDecl的元素{}Measure_Value_Max。
我要怎么做才能解决这个问题?
我使用
Netbean 7.4
和jdk1.7
。
此外,在我的模式的另一部分中,这种类型的限制工作正常!为什么啊?
<xs:element name="UD_Info">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" ref="UD_Identificator"/>
<xs:choice minOccurs="1" maxOccurs ="3">
<xs:element ref="UD_Measures"/>
<xs:element ref="UD_Alarms"/>
<xs:element ref="UD_Diagnostics"/>
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
堆栈跟踪:
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/home/francesco/.m2/repository/org/slf4j/slf4j-log4j12/1.7.6/slf4j-log4j12-1.7.6.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/home/francesco/.m2/repository/ch/qos/logback/logback-classic/1.0.6/logback-classic-1.0.6.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 1 counts of IllegalAnnotationExceptions
There's no ObjectFactory with an @XmlElementDecl for the element {}Measure_Value_Max.
this problem is related to the following location:
at protected java.util.List com.fra.jaxb.Measure.measureValueOrMeasureValueMaxOrMeasureValueMin
at com.fra.jaxb.Measure
at protected java.util.List com.fra.jaxb.UDMeasures.measure
at com.fra.jaxb.UDMeasures
at protected java.util.List com.fra.jaxb.UDInfo.udMeasuresOrUDAlarmsOrUDDiagnostics
at com.fra.jaxb.UDInfo
at com.sun.xml.bind.v2.runtime.IllegalAnnotationsException$Builder.check(IllegalAnnotationsException.java:66)
at com.sun.xml.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextImpl.java:405)
at com.sun.xml.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:253)
at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:84)
at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:66)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:248)
at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:235)
at javax.xml.bind.ContextFinder.find(ContextFinder.java:432)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:637)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:584)
at com.fra.mavenparser.unMarsh.doInfr(unMarsh.java:56)
at com.fra.mavenparser.Parser.main(Parser.java:26)
要获取ObjectFactory
进程,您需要将其作为用于引导JAXBContext
的类之一传入,或者在生成模型的包名称上创建JAXBContext
。
Overview JAXB的非官方文档: http://jaxb.java.net/guide/ SpringSide-Core中的JaxbMapper Jaxb中最讨厌的地方,是需要在构造JAXBContext时,预先设定可能会处理的Root Element Types。 Springside参考Spring里的做法,封装类一个静态的Map,为每一个Class维护了一个JaxbContext,这
JAXB(Java Architecture for XML Binding简称JAXB)允许Java开发人员将Java类映射为XML表示方式。JAXB提供两种主要特性:将一个Java对象序列化为XML,以及反向操作,将XML解析成Java对象。换句话说,JAXB允许以XML格式存储和读取数据,而不需要程序的类结构实现特定的读取XML和保存XML的代码。
17.5 JAXB JAXB 绑定编译器将 W3C XML 架构实现为一到数个 Java 类,一个 jaxb.properties 文件,可能还会有数个资源文件。JAXB 同时还支持从被注解的 Java 类生成 XML 架构。 Spring 支持基于 17.2 Marshaller 和 Unmarshaller 所提到的 Marshaller 和 Unmarshaller 结构实现的 JAXB 2
Serialize(XML,https://www.wenjiangs.com/doc/1zhlzeuu) Overview 想当年XML是标准的持久化格式,而Java的https://www.wenjiangs.com/doc/ejjryfdb标准就很好,不鼓励再使用别的如XStream的类库了。 后来全部都换成https://www.wenjiangs.com/doc/1zhlzeuu了,好的
问题内容: 我需要一些有关JAXB Annotations的帮助,但找不到好的文档可以帮助我解决这个问题。 我有一个要编入XML的类。我的班级看起来像这样: 召回类如下所示: 因此,它将产生以下XML输出: 但是我希望ArrayList以不同的方式显示,如下所示: 知道我该怎么做吗?我认为问题出在我的架构上,但我将其用于编组: 任何想法如何解决这一问题?谢谢! 问题答案: 试试这个: 从文档中:
我使用xjc将XML转换为JAXB元素,并执行编组操作。但是,xml中的一些字段没有根据xsd进行验证。 例如:我已经给出了一个作为整数的字段,但其接受字符串并没有抛出验证错误。