这是我的XML文件:
<fields>
<field mappedField="Num">
</field>
<field mappedField="Type">
</field>
</fields>
我创建了两个类来解析它(Fields.java和Field.java):
@XmlRootElement(name = "fields")
public class Fields {
@XmlElement(name = "field")
List<Field> fields = new ArrayList<Field>();
//getter, setter
}
和
public class Field {
@XmlAttribute(name = "mappedField")
String mappedField;
//getter,setter
}
但我有一个例外:
[INFO] com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException: 1 counts of IllegalAnnotationExceptions
[INFO] at com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException$Builder.check(IllegalAnnotationsException.java:66) ~[na:1.6.0_07]
[INFO] at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextImpl.java:422) ~[na:1.6.0_07]
[INFO] at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:270) ~[na:1.6.0_07]
我不明白为什么会出现这种例外。例外情况如下:
JAXBContext context = JAXBContext.newInstance(Fields.class);
我使用JDK 1.6_0.0.7。谢谢。
下列情况之一可能导致异常:
我不明白为什么会抛出这个JAXB IllegalAnnotationException
我还得到了IllegalAnnotationExceptions的###计数
异常,这似乎是由于Spring连接中的不正确的依赖层次结构造成的。
我通过在JAXB代码中放置断点来解决这个问题。对我来说,这是在com.sun.xml.bind.v2.runtime.IllegalAnnotationsExc0019$Builder.check()
。然后我转储了list
变量,它给出了如下内容:
[org.mortbay.jetty.Handler is an interface, and JAXB can't handle interfaces.
this problem is related to the following location:
at org.mortbay.jetty.Handler
at public org.mortbay.jetty.Handler[] org.mortbay.jetty.handler.HandlerCollection.getHandlers()
at org.mortbay.jetty.handler.HandlerCollection
at org.mortbay.jetty.handler.ContextHandlerCollection
at com.mprew.ec2.commons.server.LocalContextHandlerCollection
at private com.mprew.ec2.commons.server.LocalContextHandlerCollection com.mprew.ec2.commons.services.jaxws_asm.SetLocalContextHandlerCollection.arg0
at com.mprew.ec2.commons.services.jaxws_asm.SetLocalContextHandlerCollection,
org.mortbay.jetty.Handler does not have a no-arg default constructor.]
....
没有无参数默认构造函数
在我看来似乎有误导性。也许我不明白例外是怎么说的。但它确实表明我的LocalContextHandlerCollection
存在问题。我删除了一个依赖循环,错误被清除。
希望这将有助于其他人。
这个异常是由于您的JAXB(JSR-222)实现认为有两个映射为相同名称的东西(一个字段和一个属性)。对于您的用例,有两个选项:
选项1-用@xmlacessortype(xmlacesstype.Field)
如果要注释该字段,则应指定@xmlacessortype(xmlacesstype.field)
领域。爪哇:
package forum10795793;
import java.util.*;
import javax.xml.bind.annotation.*;
@XmlRootElement(name = "fields")
@XmlAccessorType(XmlAccessType.FIELD)
public class Fields {
@XmlElement(name = "field")
List<Field> fields = new ArrayList<Field>();
public List<Field> getFields() {
return fields;
}
public void setFields(List<Field> fields) {
this.fields = fields;
}
}
领域爪哇:
package forum10795793;
import javax.xml.bind.annotation.*;
@XmlAccessorType(XmlAccessType.FIELD)
public class Field {
@XmlAttribute(name = "mappedField")
String mappedField;
public String getMappedField() {
return mappedField;
}
public void setMappedField(String mappedField) {
this.mappedField = mappedField;
}
}
选项#2-注释属性
缺省访问器类型为XmlAccessType。PUBLIC
.这意味着默认情况下,JAXB实现将公共字段和访问器映射到XML。使用默认设置,您应该注释要覆盖默认映射行为的公共访问器。
领域。爪哇:
package forum10795793;
import java.util.*;
import javax.xml.bind.annotation.*;
@XmlRootElement(name = "fields")
public class Fields {
List<Field> fields = new ArrayList<Field>();
@XmlElement(name = "field")
public List<Field> getFields() {
return fields;
}
public void setFields(List<Field> fields) {
this.fields = fields;
}
}
领域爪哇:
package forum10795793;
import javax.xml.bind.annotation.*;
public class Field {
String mappedField;
@XmlAttribute(name = "mappedField")
public String getMappedField() {
return mappedField;
}
public void setMappedField(String mappedField) {
this.mappedField = mappedField;
}
}
了解更多信息
问题内容: 我目前正在使用DOM解析器来解析XHTML文档,例如: 我的问题是,当我的文档包含一个实体引用时,例如: 我的解析器为包含“€”而不是“&euro;”的内容创建了一个Text节点。这就是说,它正在按预期的方式解析实体(XHTML 1.0 Strict DTD链接到ENTITIES Latin1 DTD,这反过来确定了“&euro;”与“€”的对等)。 问题是,我不希望解析器执行此类操作
问题内容: 我以为应该使用十进制数字执行无限精度算术的答案。 考虑以下代码段: 我希望通过,但实际上执行程序甚至没有到达那里:引发原因! 事实证明,此行为已在API中明确记录: 在的情况下,精确商可具有无限长的十进制扩展数;例如,1除以3。如果商具有不间断的十进制扩展数,并且指定了该操作以返回精确的结果,则抛出an 。否则,将返回除法的精确结果,就像其他操作一样。 进一步浏览API,人们发现实际上
问题内容: 我有一个名为的变量,它具有以下格式的今天的日期:。然后,将其格式化为MySQL的Date类型格式,即。这段代码可以做到: 我要做的是将其恢复为Date类型。我尝试了一些方法,但是它们没有用。主要解决方案是按照其他的问题中所述进行操作](http://codingdict.com/questions/2936),并通过一个小小的mod达到了我想要的功能: 但是它不起作用,因为尝试解析时出
untangle untangle 是一个简洁的用于解析 XML 文档的库。输入一个 XML 文档后,untangle 将文档的结构映射成结点和属性,并返回一个 Python 对象。 形如以下的 XML 文件: <?xml version="1.0"?> <root> <child name="child1"> </root> 可以使用以下的方法进行加载: import untangl
我将日期作为一个存储在数据库中,格式为“2 15 201 5”(大概是“m d yyyy”?)。下面代码中的包含获取日期的方法的返回值。我想解析日期,以便设置。基于Java中字符串到日期转换的实例 挠头。
问题内容: 我不是开发人员,只是涉足编程。我从来不了解的一个领域是XML解析。可悲的是,对于我最新的“项目”,我需要为一个Android应用执行此操作。它是我正在工作的原型。 我有这个XML(模型文件): 我有一些代码可以让我获得每个的NodeList: 我不确定下一步该怎么做。我的代码对此似乎很长。我一直在搜寻更好的方法,但发现一些更简洁的代码,无法上班。 有没有很好的Android XML教程