Как я могу правильно определить xjc , что все, что все, что все, что есть, все, что все, что есть, все, что все, что все, что есть, все, что все, что есть, все, что все, что есть, все, что все, что есть, так же, что все, что все, что есть, все, что все, что есть, все, что все, что есть, leptring elements
Требуемый вывод: < /p>
protected Map prop2;
< /code>
Я создал пользовательскую обертку и пользовательский адаптер: < /p>
LangStringWrapper.class[/code]:
Код: Выделить всё
import jakarta.xml.bind.annotation.XmlAccessType;
import jakarta.xml.bind.annotation.XmlAccessorType;
import jakarta.xml.bind.annotation.XmlAttribute;
import jakarta.xml.bind.annotation.XmlValue;
@XmlAccessorType(XmlAccessType.FIELD)
public class LangStringWrapper {
@XmlValue
private String value;
@XmlAttribute(name = "lang", namespace = "http://www.w3.org/XML/1998/namespace", required = true)
private String lang;
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public String getLang() {
return lang;
}
public void setLang(String lang) {
this.lang = lang;
}
}
< /code>
LangStringAdapter.class:Код: Выделить всё
import jakarta.xml.bind.annotation.adapters.XmlAdapter;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
public class LangStringAdapter extends XmlAdapter[*], Map> {
@Override
public Map unmarshal(List list) {
Map map = new LinkedHashMap();
if (list != null) {
for (LangStringWrapper item : list) {
if (item.getLang() != null && item.getValue() != null) {
map.put(item.getLang(), item.getValue());
}
}
}
return map;
}
@Override
public List marshal(Map map) {
List list = new ArrayList();
if (map != null) {
for (Map.Entry entry : map.entrySet()) {
LangStringWrapper wrapper = new LangStringWrapper();
wrapper.setLang(entry.getKey());
wrapper.setValue(entry.getValue());
list.add(wrapper);
}
}
return list;
}
}
< /code>
My Attempted custom-binding.xjb< /code>
Я попробовал следующее (и много вариантов): < /p>
< /code>
But this gives various errors:
[list]
Attribute 'adapter' is not allowed on element 'jaxb:javaType'
[*]compiler was unable to honor this conversion customization
[*]XPath evaluation results in too many target nodes
[*]undefined simple type "LangString"
[/list]
I’ve also tried using jaxb:javaTypeКак я могу правильно определить xjc , так что все элементы Langstring генерируются с использованием jaxb -adpter или jaxb -adapter или jaxb adapter japter или jaxb adapter jaxb lepter или jaxb -adapter jax Карта вместо списка ?
Я хочу, чтобы общий подход, если это возможно, чтобы избежать жесткого кодирования для каждого элемента.
Любая помощь в разрешении этого, особенно с рабочим примером, будет очень оценен.
Подробнее здесь: https://stackoverflow.com/questions/796 ... -mapstring