2017-02-21 41 views
1

我收到一個字符串作爲從服務器的響應。我想使用XStream將該字符串轉換爲java pojos。我的一些領域的名字中有冒號,例如@XStreamAlias(S:Envelope)異常在XstreamAliasing中使用冒號

在解析過程中,它顯示錯誤「CannotResolveClassException:Envelope」。但如果我使用

@XStreamAlias(Envelope) 

它工作正常。 如何讓Xstream在字段名中允許冒號(「:」)?

回答

0

它爲我工作:

import java.io.InputStream; 

import org.junit.Test; 

import com.thoughtworks.xstream.XStream; 
import com.thoughtworks.xstream.annotations.XStreamAlias; 
import com.thoughtworks.xstream.annotations.XStreamAsAttribute; 

import lombok.Data; 


public class ColonAlias { 

    @Test 
    public void smokeTest() { 
     InputStream file = ColonAlias.class.getResourceAsStream(ColonAlias.class.getSimpleName()+ ".xml"); 
     XStream xStream = new XStream(); 
     xStream.ignoreUnknownElements(); 
     xStream.processAnnotations(Parent.class); 

     Parent parent = (Parent) xStream.fromXML(file); 

     System.out.println(parent); 
    } 

    @XStreamAlias("parent") 
    @Data 
    public class Parent { 

     @XStreamAsAttribute 
     private String name; 

     @XStreamAlias("p:age") 
     private String age; 
    } 
} 

XML:

<?xml version="1.0" encoding="UTF-8"?> 
<parent name="Adam"> 
     <p:age>33</p:age> 
</parent> 

輸出:

ColonAlias.Parent(name=Adam, age=33)