1
我正在使用Java的SimpleXML库。目前,我正试图使用@Convert注释反序列化节点。我覆盖转换器接口的read()方法,它具有以下原型:使用AnnotationStrategy时自动反序列化子节点
Converter.read(InputNode node)
在read()方法,我迭代子节点和反序列化它们。但是,一些子节点相当复杂,我希望它们使用当前上下文以正常方式反序列化。我认为它可以使用横移类完成:
public void read(InputNode node) {
InputNode child;
while ((child = node.getNext()) != null) {
String name = child.getName();
if (name == "child1") {
//manually read object - no problem
MyFirstClass object = new MyFirstClass(child.getValue());
} else if (name == "child2") {
//automatically read object - here is the problem
Traverser traverser = new Traverser(context);
MySecondClass object = traverser.read(child, MySecondClass.class);
}
}
}
有两个问题与:
横移类是内部类的SimpleXML,并且在默认情况下,它外面是不可用的。
我在read方法中没有访问上下文对象的权限。 InputNode不提供访问它的方法。
有没有什么办法在没有复杂的SimpleXML修改的情况下获取Context对象?改变Traverser类的可见性很容易,但提供上下文不是。
或者,有没有更简单的方法来做我所需要的?