#java #xml #jaxb
#java #xml #jaxb
Вопрос:
<mapdata>
<media1>
<name>media1</name>
<items>
<key>1</key>
<width>100</width>
<height>150</height>
</items>
<items>
<key>2</key>
<width>100</width>
<height>150</height>
</items>
</media1>
<media2>
<name>media2</name>
<items>
<key>1</key>
<width>100</width>
<height>150</height>
</items>
</media2>
</mapdata>
Я хочу преобразовать приведенный выше xml в приведенный ниже объект HashMap с помощью JaxB. Пожалуйста, помогите мне в этом.
public class MapData{
protected Map<String, Media> mapdata;
}
public class Media {
private String name;
private List<MediaDetail> items = new ArrayList<>();
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<MediaDetail> getItems() {
return items;
}
public void setItems(List<MediaDetail> items) {
this.items = items;
}
}
Медиа растут, как media1, media2, media3 и т.д.. Из-за непредсказуемых тегов тега media . Я не могу определить, используя имя тега. Мне нужно сопоставить как медиа-тег в качестве ключа и сохранить детали как объект значения, который включает в себя имя и список элементов. Пожалуйста, дайте мне знать, возможно ли это достичь.
Комментарии:
1. У меня нет xsd. Нет
Ответ №1:
Создайте xsd для вас из вашего xml, используя онлайн-источники, такие как here .
Теперь вы можете использовать это для создания pojo. Jaxb генерирует pojo самостоятельно, позже вы можете создать класс так, как хотите, получая поля, а затем устанавливая нужные поля. Если вы используете maven, есть и другие доступные способы создания pojo вместо использования терминала.
Ответ №2:
Это не так просто сделать. Вероятно, вы будете использовать тот MapAdapter
или иной тип адаптера.
Вам нужно будет внести изменения в свои .java
классы. Ввод некоторых аннотаций.
И даже вам нужно xml
будет немного изменить свой.
Тем не менее, я думаю, что вы можете найти все, что вам нужно в этой статье.
Удачи.