Я пытаюсь сериализовать следующий XML в объект Java с помощью XStream.
<?xml version="1.0" encoding="UTF-8"?>
<corpus>
<s id="1">
<tree style="penn">
(ROOT
(S
(NP (NNP Brooklyn) (NN man))
(VP (VBD accused)
(PP (IN of)
(NP (NN forgery))))
(. .)))
</tree>
<dependencies style="typed">
<dep type="nn">
<governor idx="2">man</governor>
<dependent idx="1">Brooklyn</dependent>
</dep>
<dep type="nsubj">
<governor idx="3">accused</governor>
<dependent idx="2">man</dependent>
</dep>
<dep type="prep_of">
<governor idx="3">accused</governor>
<dependent idx="5">forgery</dependent>
</dep>
</dependencies>
</s>
<s id="2">
<tree style="penn">
(ROOT
(S
(S
(NP (DT A)
(ADJP (CD 36) (NN year) (JJ old))
(NNP Brooklyn) (NN man))
(VP (VBZ is)
(VP (VBG facing)
(NP (JJ several) (NN felony) (NNS charges))
(SBAR (IN after)
(S
(NP (PRP he))
(VP (VBD was)
(VP (VBN accused)
(PP (IN of)
(S
(VP (VBG giving)
(NP
(NP (DT a) (JJ forged) (NN prescription))
(PP (IN for)
(NP (NN oxycodone))))
(PP (TO to)
(NP (DT a) (JJ local) (NN pharmacist)))))))))))))
(, ,)
(NP (NNP Endicott) (NNS police))
(VP (VBD said))
(. .)))
</tree>
<dependencies style="typed">
<dep type="det">
<governor idx="6">man</governor>
<dependent idx="1">A</dependent>
</dep>
</s>
</corpus>
Я создал следующие классы для этой структуры XML:
public class Corpus {
private List<Sentence> sentences = new ArrayList<Sentence>();
public List<Sentence> getSentences() {
return sentences;
}
public void setSentences(List<Sentence> sentences) {
this.sentences = sentences;
}
public void add(Sentence sentence) {
this.sentences.add(sentence);
}
}
и
public class Sentence {
private int id;
private Tree tree;
private Dependencies dependencies;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public Tree getTree() {
return tree;
}
public void setTree(Tree tree) {
this.tree = tree;
}
public Dependencies getDependencies() {
return dependencies;
}
public void setDependencies(Dependencies dependencies) {
this.dependencies = dependencies;
}
public Sentence(int id) {
this.id = id;
}
}
У меня есть другие классы также для каждого элемента, но я не упомянул эти классы здесь. Когда я запускаю проект, я получаю следующую ошибку:
Exception in thread "main" com.thoughtworks.xstream.converters.ConversionException: s : s : s : s
---- Debugging information ----
message : s : s
cause-exception : com.thoughtworks.xstream.mapper.CannotResolveClassException
cause-message : s : s
class : com.srl.SSAOutputModel.Corpus
required-type : com.srl.SSAOutputModel.Corpus
path : /corpus/s
line number : 1
Следующий код пытается десериализовать xml
xstream.alias("corpus", Corpus.class);
xstream.addImplicitCollection(Corpus.class, "sentences");
xstream.useAttributeFor(Sentence.class, "id");
xstream.aliasField("id", Sentence.class, "id");
xstream.alias("S", Sentence.class);
xstream.useAttributeFor(Tree.class, "style");
xstream.aliasField("style",Tree.class, "style");
xstream.omitField(Tree.class, "content");
xstream.autodetectAnnotations(true);
Corpus cx = (Corpus) xstream.fromXML(lines);
Может кто-нибудь сказать, что не так с кодом?