2016-08-16 15 views
0

以下のコードでxstreamを使用して以下のxmlを解析しようとしています。しかし、私は解析例外を取得し続けます。xstreamを使用してネストしたテーブルを解析する

<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クラス:

+0

'ipAddresses'はどこで初期化されていますか?私はそれが宣言され使用されているのを見ることができますが、その値には何も表示されません。 –

+0

IPAddressEntryは、IPアドレスを表します。 – mohan

答えて

0
public interface InfoIf { 

    public String name(); 

    public String toString(); 
} 

以下のコードで解決される問題。

XStream xstream = new XStream(new DomDriver()); 
     xstream.alias("ipAddressInfo", IPAddressInfo.class); 
     xstream.alias("ipAddrEntry", IPAddressEntry.class); 
     xstream.addImplicitCollection(IPAddressInfo.class, "ipAddresses"); 
関連する問題