У меня есть список клиентов в xml, как показано ниже
<products>
<product>
<name>product1</name>
<id>c123</id>
<customer>
<name>customer1</name>
<id>c1</id>
<dob>10/10/23</dob>
....
</customer>
<customer>
<name>customer2</name>
<id>c2</id>
<dob>10/10/23</dob>
....
</customer>
</product>
<product>
<name>product2</name>
<id>c123</id>
<customer>
<name>customer3</name>
<id>c3</id>
<dob>10/10/23</dob>
....
</customer>
<customer>
<name>customer4</name>
<id>c4</id>
<dob>10/10/23</dob>
....
</customer>
</product>
</products>
, чтобы отобразить это, у меня есть пользовательский объект
public class Product {
private String name;
private String id;
@XmlJavaTypeAdapter (CustomerAdapter.class)
@XmlElement(name="customer")
private Map<String, Customer> customerMap;
setter()/getter()
}
public class Customer {
private String name;
private String id;
private String dob;
setter()/getter()
}
Мне нужно преобразовать это в карту, где находится ключid и Customer в качестве значения, так что лучше получить данные клиента на карте, чем список.Чтобы сделать преобразования, я написал адаптер
public class CustomerAdapter extends XmlAdapter<Customer, Map<String, Customer>> {
Map<String, Customer> customerMap = new HashMap<> ( );
@Override
public Map<String, Customer> unmarshal(Customer customer) {
if (null != customer) {
tagMap.put (customer.getId ( ), customer);
}
return customerMap ;
}
@Override
public PublicationTagDto marshal(Map<String, Customer> customerMap) {
return customerMap.values ().iterator ().next ();
}
}
Проблема здесь в том, что я получаю список всех клиентов по всем продуктам.в основном для продукта 1 я получаю список всех клиентов 1 2 3 4. Аналогично для продукта 2 я получаю список всех клиентов дерева 1 2 3 4.Что мне нужно это product1 customer 1 2, product 2 customer 3 4, В основном нужно инициировать CustomerAdapter для каждого объекта person.Проблема в том, что CustomerAdapter инициализируется один раз, мне нужно его инициализировать для каждого объекта продукта.
Пожалуйста, помогите здесь.