如何将字符串解析为Smooks beanpopulator

时间:2013-06-25 06:59:27

标签: xml smooks

我是Smooks的新手,我希望实现以下目标。可能是我对这个全新,我还没有看到答案,但这应该是一个基本的东西。

我正在摘自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',而是每次都应该使用唯一值填充它。 (例如:customerName ='Richard')

我如何实现这一目标?谢谢!

编辑:如果这看起来很傻。 我想要做的是为地图排序添加一个值。我为此读取了一个CSV,如果CSV包含某个标题(例如:customerName),我将其添加到地图中,并将密钥设置为“customerName”。从CSV中读取标题是我的另一件事,但我也找不到解决方案。

1 个答案:

答案 0 :(得分:0)

我通过编写一个新的Decoder类来解决这个问题。不确定这是否是最好的方式,但看起来像它的方式;)

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