当我尝试使用 xstream 将 xml 文件编组到 POJO 中时,我不断收到此错误,我不确定发生了什么,可以用新的眼光来看待事物。
Exception in thread "main" com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter$UnknownFieldException: No such field org.smurk.webtest.domain.Attribute.class-title
---- Debugging information ----
field : class-title
class : org.smurk.webtest.domain.Attribute
required-type : org.smurk.webtest.domain.Attribute
converter-type : com.thoughtworks.xstream.converters.reflection.ReflectionConverter
path : /classification/attributes/attribute/class-title
line number : 1
class[1] : org.smurk.webtest.domain.Attributes
class[2] : org.smurk.webtest.domain.Classification
version : 1.4.6
-------------------------------
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.handleUnknownField(AbstractReflectionConverter.java:495)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:351)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:257)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72)
at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshallField(AbstractReflectionConverter.java:474)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:406)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:257)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72)
at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshallField(AbstractReflectionConverter.java:474)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:406)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:257)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72)
at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:50)
at com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:134)
at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarshal(AbstractTreeMarshallingStrategy.java:32)
at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1157)
at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1141)
at com.thoughtworks.xstream.XStream.fromXML(XStream.java:1012)
at com.thoughtworks.xstream.XStream.fromXML(XStream.java:1003)
at org.smurk.webtest.XmlRead.parseFile(XmlRead.java:31)
at org.smurk.webtest.Main.main(Main.java:15)
这些是相关的域对象:
@XStreamAlias("attribute")
public class Attribute {
@XStreamAlias("class-title")
private ClassTitle classTitle;
@XStreamAlias("type")
private String type;
public ClassTitle getClassTitle() {
return classTitle;
}
public void setClassTitle(ClassTitle classTitle) {
this.classTitle = classTitle;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
}
@XStreamAlias("class-title")
public class ClassTitle {
@XStreamAlias("title-part")
private TitlePart titlePart;
public TitlePart getTitlePart() {
return titlePart;
}
public void setTitlePart(TitlePart titlePart) {
this.titlePart = titlePart;
}
}
这是 XML:
<classification symbol="A01B1/00" level="7" additional-only="false" status="PUBLISHED">
<attributes>
<attribute type="TITLES">
<class-title>
<title-part>
<text scheme="ipc">Hand tools</text>
<explanation>
<text scheme="ipc"> edge trimmers for lawns <class-ref scheme="cpc">A01G3/06</class-ref> ; </text>
<comment>
<text scheme="cpc"> machines for working soil <class-ref scheme="cpc">A01B35/00</class-ref> ; making hand tools <class-ref scheme="cpc">B21D</class-ref>
</text>
</comment>
</explanation>
</title-part>
</class-title>
</attribute>
</attributes>
</>
只是为了回答这个问题,似乎我在父类中存在一些 XStream 注释错误,这导致了层次结构中的错误。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)