我有一个CSV到Java的配置文件,在其中一个字段中有一个&符号。当我转换为Java bean时,它会将&
添加到字段中。
我可以阻止sm !!这样做吗?
这是配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<smooks-resource-list xmlns="http://www.milyn.org/xsd/smooks-1.1.xsd"
xmlns:csv="http://www.milyn.org/xsd/smooks/csv-1.1.xsd" xmlns:jb="http://www.milyn.org/xsd/smooks/javabean-1.1.xsd">
<params>
<param name="stream.filter.type">SAX</param>
<param name="default.serialization.on">false</param>
<param name="feature-off">http://apache.org/xml/features/scanner/notify-char-refs</param>
</params>
<csv:reader
fields="Property,PropertyID,Unit#,FloorPlan, ReportingStatus, WorkType, Sub-Status, Subject, CurrentStep, Status, DenyCounter, RevisionCounter, MoveOutDate, BaselineOPSCommitPlan, PlannedOPSCommitPlan, ActualOPSCommitPlan, BaselineCSAcceptsPlan, PlannedCSAcceptsPlan, ActualCSAcceptsPlan, BaselineOPSCommitUnit, PlannedOPSCommitUnit, ActualOPSCommitUnit, BaselineCSAcceptsUnit, PlannedCSAcceptsUnit, ActualCSAcceptsUnit, BaselineCSTurnsUnit, PlannedCSTurnsUnit, ActualCSTurnsUnit, BaselineCommunityManagerAccepts, PlannedCommunityManagerAccepts, ActualCommunityManagerAccepts, BaselineRentReady, PlannedRentReady, ActualRentReady, Area, PreleaseMove-inDate"
skipLines="1" separator=","/>
<jb:bindings beanId="UpDownUnitList" class="java.util.ArrayList" createOnElement="csv-set">
<jb:wiring beanIdRef="UpDownUnit" />
</jb:bindings>
<jb:bindings beanId="UpDownUnit" class="com.mycompany.beans.UpDownUnit" createOnElement="csv-record">
<jb:value data="csv-record/Property" property="property" />
<jb:value data="csv-record/PropertyID" property="propertyNumber" />
<jb:value data="csv-record/Unit#" property="unitName" />
...
...
...
<jb:value data="csv-record/Area" property="area" />
<jb:value data="csv-record/PreleaseMove-inDate" decoder="com.mycompany.smooks.decoders.DateNullDecoder" property="preleaseMoveInDate">
<jb:decodeParam name="format">MM.dd.yyyy</jb:decodeParam>
</jb:value>
</jb:bindings>
</smooks-resource-list>
答案 0 :(得分:0)
据我所知,Smooks必须逃避字段值,因为它将输入流读取器数据转换为SAX事件流(即XML)。我有一种感觉,你需要在字段值上应用某种类型的JavaBean解码器(将&amp; back转换为&amp; where)。
答案 1 :(得分:0)
我遇到了同样的问题。我可以通过删除
来解决这个问题<param name="stream.filter.type">SAX</param>
来自smooks配置文件的。
这是因为SAX流过滤器发生了这种转换。
如果你真的不需要SAX过滤器,即如果你不想要大数据我认为你应该没有使用SAX解析器。