Я использую JAXB для процесса десортировки, для которого запрос поступает из пользовательского интерфейса в наш класс обслуживания. Ниже приведен формат XML-запроса.
<SampleRequest user="testUser" account="testAccount" Specifier= "value1a,value1b,value1c : name2a,value2b,value2c"/>
Мое требование состоит в том, что атрибут Specifier имеет несколько серий значений (:, разделенных двоеточием ), мне нужно сопоставить каждую серию значений с моим пользовательским классом Java
Я пробовал так
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class SampleRequest {
@XmlAttribute
private String user;
@XmlAttribute
private String account;
@XmlAttribute(name="Specifier")
private List<Specifier> specifier;
}
Спецификатор.java
@XmlJavaTypeAdapter(SpecifierAdapter.class)
public class Specifier {
}
SpecifierAdapter.java
public class SpecifierAdapter extends XmlAdapter{
@Override
public Object marshal(Object arg0) throws Exception {
// TODO Auto-generated method stub
return null;
}
@Override
public Object unmarshal(Object arg0) throws Exception {
// TODO Auto-generated method stub
return null;
}
}
Отредактированная часть
Класс Specifier имеет 3 свойства String.
class Specifier
{
String value1;
String value2;
String value3;
}
И мне нужно, чтобы каждая серия Specifier, например (value1a, value1b, value1c ), должна быть сопоставлена со значением1, значение2, значение3 соответственно
Отредактированная Часть 3
Привет, Спасибо за ответ, я попытался разобрать этот пример, но обнаружил, что получаю null
Это запрос, который я передал
<sampleRequest user="user" account="account" Specifier="v1,v2,v3 : a1,a2,a3"/>
Просто хочу убедиться, что мой класс Specifier правильный или нет? (Поскольку я не использовал здесь никаких аннотаций)
package com;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
@XmlJavaTypeAdapter(SpecifierAdapter.class)
public class Specifier {
Specifier(String v1, String v2, String v3)
{
}
String value1;
public String getValue1() {
return value1;
}
public void setValue1(String value1) {
this.value1 = value1;
}
public String getValue2() {
return value2;
}
public void setValue2(String value2) {
this.value2 = value2;
}
public String getValue3() {
return value3;
}
public void setValue3(String value3) {
this.value3 = value3;
}
String value2;
String value3;
}