我認爲Strategy
方法不起作用,因爲他們使用帶註釋的類作爲XML模式,並且模式中不存在什麼不會被處理(訪問者無法訪問)。
轉換器可用於如下:
@Root(name = "key", strict = false)
@Convert(KeyConverter.class)
public class Key {
private String element;
public Key(String elementValue) {
element = elementValue;
}
}
轉換器存儲轉換期間的值:
public class KeyConverter implements Converter<Key> {
private String otherValue;
@Override
public Key read(InputNode node) throws Exception {
String elementValue = node.getNext("element").getValue().trim();
otherValue = node.getNext("other").getValue().trim();
return new Key(elementValue);
}
@Override
public void write(OutputNode arg0, Key arg1) throws Exception {
throw new UnsupportedOperationException();
}
/**
* @return the otherValue
*/
public String getOtherValue() {
return otherValue;
}
}
放在一起:
Registry registry = new Registry();
KeyConverter keyConverter = new KeyConverter();
registry.bind(Key.class, keyConverter);
Persister serializer = new Persister(new RegistryStrategy(registry));
Key key = serializer.read(Key.class, this.getClass().getResourceAsStream("key.xml"));
// Returns the value "acquired" during the last conversion
System.out.println(keyConverter.getOtherValue());
這不是太優雅,但可能適合您的需要。
謝謝!我的不好,也許OP是誤導性的。我編輯它。我的問題是'Key'類有很多字段,我想對這些字段使用默認的反序列化,並以自定義的方式提取額外的元素。這可能嗎? – WonderCsabo
你有更多的提示嗎? :( – WonderCsabo