2013-06-25 21 views
1

我是Smooks的新手,我想實現以下目標。可能是我對此完全陌生,但我還沒有看到答案,但這應該是一件基本的事情。如何解析一個字符串到Smooks beanpopulator

我正在從beanpopulator官方文檔中顯示的示例摘錄。

http://www.milyn.org/javadoc/v1.0/smooks-cartridges/javabean/org/milyn/javabean/BeanPopulator.html

public class Header { 
    private Date date; 
    private Long customerNumber; 
    private String customerName; 
} 

相應的Smooks配置

<-- Create the Header bean instance when we encounter the "header" element. 
     Call it "header" --> 
<resource-config selector="header"> 
    <resource>org.milyn.javabean.BeanPopulator</resource> 
    <param name="beanId">header</param> 
    <param name="beanClass">org.milyn.javabean.Header</param> 
    <param name="bindings"> 
     <-- Header bindings... --> 
     <binding property="date" type="OrderDateLong" selector="header/date" /> <-- See OrderDateLong decoder definition below... --> 
     <binding property="customerNumber" type="Long" selector="header/customer/@number" /> 
     <binding property="customerName" selector="header/customer" /> <-- Type defaults to String --> 
    </param> 
</resource-config> 

假設字段「客戶名稱」並不需要從「selecter」檢索,而是應當有一個唯一值填充每次。 (例如:customerName ='Richard')

我該如何做到這一點?謝謝!

編輯:如果這看起來很愚蠢。 我想要做的是給地圖添加一個值。我爲此讀取了CSV,並且如果CSV包含某個標題(例如:customerName),我將其添加到地圖上,並使用「customerName」作爲鍵。從CSV中讀取標題是我的想法,但我無法找到解決方案。

回答

0

我通過編寫一個新的解碼器類來解決這個問題。不知道這是否是最好的方式,但看起來像它的方式;)

public class NameStringDecoder implements DataDecoder { 
    @Override 
    public Object decode(String customerName) throws DataDecodeException { 
     return "Richard"; 
    } 
}