【问题标题】:parsing for nested table using xstream使用 xstream 解析嵌套表
【发布时间】:2016-08-16 09:53:05
【问题描述】:

我尝试使用带有以下代码的 xstream 解析以下 xml。但我不断收到解析异常。

<result xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation='/getIpTable/getIpTable.xsd'>
        <IPAddressInfo>
            <ipAddrEntry>
                <ipAdEntIfIndex>607</ipAdEntIfIndex>
                <ipAdEntAddr>172.23.218.126</ipAdEntAddr>
                <ipAdEntNetMask>255.255.255.192</ipAdEntNetMask>
            </ipAddrEntry>
        </IPAddressInfo>
    </result>



XStream xStream = new XStream();
         xStream.alias("result", IPAddressInfo.class);
         xStream.alias("ipAddrEntry", Entry.class);
         xStream.alias("ipAdEntIfIndex", String.class);
         xStream.alias("ipAdEntAddr", String.class);
         xStream.alias("ipAdEntNetMask", String.class);
        IPAddressInfo ipAddressInfo = new IPAddressInfo();
        ipAddressInfo=(IPAddressInfo) xStream.fromXML(xml);
        System.out.println("------"+ipAddressInfo);

类:

public class IPAddressInfo implements java.io.Serializable, InfoIf {
    public IPAddressEntry[] ipAddresses;

    public String name() { return "IPAddressInfo"; };

    public String toString() {
        String rc = new String("IPAddressInfo collected:\n");
        for (int i = 0; ipAddresses != null && i < ipAddresses.length; i++) {
            rc += "  entry" + i + "------------------------------------\n";
            rc += "    ifIndex = " + ipAddresses[i].ifIndex + "\n";
            rc += "    IP      = " + ipAddresses[i].ip.getHostAddress() + "\n";
            rc += "    ipMask  = " + ipAddresses[i].ipMask.getHostAddress() + "\n";
        }
        return rc;
    }
}

IPAddressEntry 类:

public class IPAddressEntry implements java.io.Serializable {
    public int ifIndex;
    public InetAddress ip;
    public InetAddress ipMask;
}

以下是客户端类中使用的类详细信息。

InfoIf 类:

public interface InfoIf {

    public String name();

     public String toString();
}

【问题讨论】:

  • ipAddresses 在哪里初始化?我可以看到它被声明和使用,但看不到它的值被填充的任何东西。
  • IPAddressEntry 代表 ipAddresses

标签: xml xstream


【解决方案1】:

用下面的代码解决了这个问题。

XStream xstream = new XStream(new DomDriver());
        xstream.alias("ipAddressInfo", IPAddressInfo.class);
        xstream.alias("ipAddrEntry", IPAddressEntry.class);
        xstream.addImplicitCollection(IPAddressInfo.class, "ipAddresses");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-19
    • 1970-01-01
    • 2016-03-16
    • 2019-11-28
    • 1970-01-01
    • 1970-01-01
    • 2021-12-24
    相关资源
    最近更新 更多