2013-08-03 2 views
1

Я довольно новичок в xstream. Рассмотрим фрагмент XML:взаимозависимости атрибутов xstream

<?xml version="1.0"?> 
<els> 
    <el attInt="3" attDbl="1.34525"/> 
</els> 

Мне нужно преобразовать атрибут attDbl сдвигая десятичную точку по количеству мест, указанных attInt. Я не вижу, как это сделать, используя конвертер, поскольку я, похоже, не имею доступа к обоим атрибутам в интерфейсе преобразователя. Это что-то я могу сделать с конвертером, или я должен использовать xslt для этой цели?

Спасибо за вашу помощь

ответ

1

преобразователь, действующего на уровне «El» имеет доступ к обоим атрибутам через reader аргумент:

public class ElConverter implements Converter { 

    @Override 
    public Object unmarshall(HierarchicalStreamReader reader, UnmarshallingContext context) { 
     int attInt = Integer.parseInt(reader.getAttribute("attInt")); 
     double attDbl = Double.parseDouble(reader.getAttribute("attDbl")); 

     ... 
    } 

    @Override 
    public boolean canConvert(Class type) { 
     return El.class.isAssignableFrom(type); 
    } 
+0

благодаря МДИ - Я вижу это сейчас. Извините, когда я прочитал doco, я понял, что конвертеры могут быть созданы только по отдельным атрибутам, которые я вижу сейчас неправильно - ваш пример хорош и ясен. – skymoose

Смежные вопросы