Я анализирую XML
запрос, используя Java
. Структура XML
выглядит следующим образом:
<?xml version="1.0" encoding="UTF-8"?>
<TestServices>
<header>
//Header Details
</header>
<body>
<ele1>
<ele2>
<ele3>534159XXXXXX0176</ele3> //Or ele_3, ele03, ele_03
</ele2>
</ele1>
</body>
</TestServices>
Я создал классы для того же, чтобы читать элементы Header и Body. Каждый узел является классом, и я читаю значение ele3 следующим образом.
String ele3 = testServicesRequest.getBody().getEle1().getEle2().getEle3();
Имя элемента для ele3 может отличаться в зависимости от запроса. Я использовал Создать класс Java из функции xsd в eclipse, и он сгенерировал классы, подобные этой.
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"ele3"
})
public class ReqEle2 {
@XmlElement(name = "ele3", required = true)
protected String ele3;
public String getEle3() {
return ele3;
}
public void setEle3(String value) {
this.ele3 = value;
}
}
Мое требование простое. Я просто хочу поместить несколько имен элементов для одного getEle3 () метода. например. ele_3, ele03, ele_03 с использованием меньшего количества изменений кода. Или, пожалуйста, предложите мне другой эффективный способ сделать это.
Пока я пытаюсь сделать это так, что я считаю нехорошо.
public class ReqEle3 {
@XmlElement(name = "ele03", required = true)
protected String ele3_1="";
@XmlElement(name = "ele_3", required = true)
protected String ele3_2="";
@XmlElement(name = "ele3", required = true)
protected String ele3_3="";
@XmlElement(name = "ele3_old", required = true)
protected String ele3_4="";
public String getEle3() {
if(ele3_1 != null && !ele3_1.isEmpty()){
return ele3_1;
}
else if(ele3_2 != null && !ele3_2.isEmpty()){
return ele3_2;
}
else if(ele3_3 != null && !ele3_3.isEmpty()){
return ele3_3;
}
else if(ele3_4 != null && !ele3_4.isEmpty()){
return ele3_4;
}
return "";
}
}