質問の目的は、this SO questionと同じですが、JAXBを使用せずに達成しようとしています。しかし、JAXBが使用するリフレクションを使用しています。リフレクション(JAXBではなく)を使用してXMLを既存のJava Beanに変換する
私は定義済みのBeanを持っているのでJAXBを使用しないようにしています。XMLが与えられたら、Beanを満たす適切なクラスと設定を取得する必要があります。
XMLは単なるデータソースです。このBeanに必要なデータをすべて取得する必要があります。
あまり複雑ではない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>
は 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
お返事ありがとうございます。しかし、私は変換だけを探しているわけではありません。私は既存のbeanを持っており、XMLデータを適切なフィールドに埋めたいと思っています。 – Vamsidhar