2014-10-08 88 views
0

我已經有了一個CSV到Java的配置文件,並在其中一個字段中有一個符號。當我轉換爲Java bean時,它會將&添加到該字段中。如何阻止逃離&符號的垃圾郵件?

爲什麼我會阻止這樣做?

這裏的配置文件:

<?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

據我記得,Smooks的一直逃避因爲它把輸入流讀取數據,SAX事件流的事實字段值(即XML)。我有一種感覺,你需要在字段值上應用某種JavaBean解碼器(在適當的情況下將&轉換回&)。

0

我面臨同樣的問題。我可以通過刪除

<param name="stream.filter.type">SAX</param> 

從smooks配置文件中得到修復。

這是因爲SAX流過濾器發生這種轉換。

如果你真的不需要一個SAX過濾器,即如果你不期望一個大數據,我認爲你應該很好,而不使用SAX解析器。