当前位置 : 主页 > 网页制作 > xml >

使用反射(而不是JAXB)将XML转换为现有Java Bean

来源:互联网 收集:自由互联 发布时间:2021-06-13
该问题的意图与 this SO question中的相同,只是我试图在不使用JAXB的情况下实现.但是使用JAXB使用的反射. 我试图不使用JAXB,因为我有一个预定义的bean,当给出XML时,我必须得到适当的类和se
该问题的意图与 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,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这里有一个教程.

我用于更复杂的结构,工作正常.

网友评论