Намерение вопроса такое же, как и в this SO question, за исключением того, что я пытаюсь достичь без использования JAXB. Но да, используя отражение, которое использует JAXB.Преобразование XML в существующий Java-компонент с использованием отражения (не JAXB)
Я стараюсь не использовать JAXB, потому что у меня есть предопределенный bean-компонент, и когда XML предоставляется, я должен получить соответствующие классы и сеттеры для заполнения компонента.
XML - это только источник данных, мне нужно вытащить любые данные для компонента.
Я пробовал и добился успеха для менее сложного XML. Но неудача для сложных, таких как ниже.
<Response>
<Result>
<Result_Flag>2</Result_Flag>
<Result_Code>1000</Result_Code>
<Result_Message>Failure</Result_Message>
<Result_Description>Just for fun2</Result_Description>
</Result>
<Remits>
<OR>
<I_Number>40002829</I_Number>
<OrderNumber>agdfsg</OrderNumber>
<Agents>
<number>y</number>
<Agent>
<name>a</name>
<id>1</id>
<phone>
<number>9424648525</number>
<network>AIRTEL1</network>
</phone>
<phone>
<number>9424648525</number>
<network>AIRTEL1</network>
</phone>
</Agent>
<Agent>
....similar data...
</Agent>
</Agents>
</OR>
<OR>
<I_Number>40004213</I_Number>
<OrderNumber>fgrtey</OrderNumber>
<Agents>
<number>z</number>
<Agent>
<name>c</name>
<id>2</id>
<phone>
<number>9424645555</number>
<network>AIRCEL1</network>
</phone>
<phone>
<number>9424645555</number>
<network>AIRCEL2</network>
</phone>
<I_Number>40002829</I_Number>
</Agent>
<Agent>
....similar data...
</Agent>
</Agents>
</OR>
</Remits>
</Response>
В приведенных выше XML массива элементов ИЛИ, Агент, телефон
Вот соответствующие бобы ...
public class SampleBean {
private String responseCode;
private String responseMessage;
private ArrayList<OR> records;
private String txnId;
}
public class OR{
private String txnId;
private String orderNumber;
private String numberOfAgents;
private ArrayList<Agent> otherAgents;
}
public class Agent {
private String agentName;
private String agentId;
private ArrayList<Phone> agentPhoneDetails;
}
public class Phone {
private String agentPhoneNumber;
private String agentPhoneNetwork;
}
Я попытался с помощью отражения и не удалось реализовать. Надеясь, что кто-то пробовал бы это ... Если вы знаете какую-либо такую реализацию, пожалуйста, помогите.
ПРИМЕЧАНИЕ: Не используя JAXB
Спасибо за ответ. Но я не ищу конверсии в одиночку. У меня есть существующий компонент, и я хочу, чтобы данные XML были заполнены в соответствующих полях. – Vamsidhar