问题的意图与this SO question中的意图相同,只是我试图在不使用JAXB的情况下实现。但是使用JAXB使用的反射。
我正在尝试不使用JAXB,因为我有一个预定义的bean,当给出XML时,我必须得到适当的类和setter来填充bean。
XML只是一个数据源,我需要提取bean所需的任何数据。
我已尝试并成功完成了不那么复杂的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数组元素是OR,代理,电话
以下是相应的豆类......
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
答案 0 :(得分:0)
我认为你可以使用xstream,这是一个将xml数据转换为java类和其他方式的库。使用非常简单。
http://x-stream.github.io/tutorial.html这是一个教程。
我用于更复杂的结构并且工作正常。