该问题的意图与 this SO question中的相同,只是我试图在不使用JAXB的情况下实现.但是使用JAXB使用的反射. 我试图不使用JAXB,因为我有一个预定义的bean,当给出XML时,我必须得到适当的类和se
我试图不使用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,Agent,phone
这是相应的豆类……
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
我认为你可以使用xstream,这是一个将xml数据转换为java类和其他方式的库.使用起来非常简单.http://x-stream.github.io/tutorial.html这里有一个教程.
我用于更复杂的结构,工作正常.