【发布时间】: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