1

我是 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 读取标题是另一回事,但我也找不到解决方案。

4

1 回答 1

0

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

public class NameStringDecoder implements DataDecoder {
    @Override
    public Object decode(String customerName) throws DataDecodeException {
        return "Richard";
    }
}
于 2013-06-26T09:22:59.930 回答