我正在使用SimpleXML库for Java。目前,我正在尝试使用@Convert注释反序列化节点。我重写了Converter接口中的read()方法,它有以下原型:
Converter.read(InputNode node)
在read()方法中,我迭代子节点并反序列化它们。但是,一些子节点非常复杂,我希望它们使用当前上下文来反序列化正常方式。我认为可以使用Traverser类来完成:
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);
}
}
}
有两个问题:
Traverser类是SimpleXML的内部类,默认情况下,它不在外面。
我无法访问read方法中的上下文对象。 InputNode没有提供访问它的方法。
有没有办法在没有SimpleXML的复杂修改的情况下在这个地方获取Context对象?更改Traverser类的可见性很容易,但提供上下文不是。
或许,有没有更简单的方法来做我需要的事情?
答案 0 :(得分:1)
您可以简单地使用您创建的Persister而不是使用AnnotationStrategy使用RegistryStrategy。