Reputation: 926
I am using transformer in JDK 7 to write out some XML and I have in the CDATA a freemarker template as follows:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<fileExport append="false" automaticExport="false" automaticExportWithErrors="true" exportDir="C:\Users\bänn\Desktop" exportFileName="<date> <time> <barcode>" exportType="Excel" splitFiles="false">
<exportTemplate><![CDATA[Date,RackBarcode,Row,Col,tubeBarcode,OrientationBarcode
<#list racks as rack>
<#list rack.containers as container>
${scandate?datetime},${rack.barcode},${container.textRow},${container.col + 1},${container.barcode},${rack.orientationBarcode}
</#list>
</#list>]]></exportTemplate>
<scanTimeQuestionsTemplate><![CDATA[<#if scanTimeQuestionsEnabled>
Scan Time Questions
<#list scanTimeQuestions as question>
${question.shortName} : ${question.answer}
</#list>
</#if>]]></scanTimeQuestionsTemplate>
<excelExportTemplate writeHeader="true">
<excelExportColumn columnDataFormatting="d/M/yyyy HH:mm" columnDataFromString="DATETIME" columnHeader="Scan Time"/>
<excelExportColumn columnDataFormatting="" columnDataFromString="RACK_BARCODE" columnHeader="Rack Barcode"/>
<excelExportColumn columnDataFormatting="" columnDataFromString="ORIENTATION_BARCODE" columnHeader="Orientation Barcode"/>
<excelExportColumn columnDataFormatting="" columnDataFromString="TUBE_ROW_TEXT" columnHeader="Tube Row"/>
<excelExportColumn columnDataFormatting="" columnDataFromString="TUBE_COLUMN" columnHeader="Tube Column"/>
<excelExportColumn columnDataFormatting="" columnDataFromString="TUBE_BARCODE" columnHeader="Tube Barcode"/>
<excelExportColumn columnDataFormatting="d/M/yyy HH:mm:ss" columnDataFromString="DATETIME" columnHeader="Scan Datetime"/>
</excelExportTemplate>
</fileExport>
</#if>
]]></scanTimeQuestionsTemplate>
<excelExportTemplate writeHeader="false">
<excelExportColumn columnDataFormatting="d/M/yyyy HH:mm" columnDataFromString="DATETIME" columnHeader="Scan Time"/>
<excelExportColumn columnDataFormatting="" columnDataFromString="RACK_BARCODE" columnHeader="Rack Barcode"/>
<excelExportColumn columnDataFormatting="" columnDataFromString="ORIENTATION_BARCODE" columnHeader="Orientation Barcode"/>
<excelExportColumn columnDataFormatting="" columnDataFromString="TUBE_ROW_TEXT" columnHeader="Tube Row"/>
<excelExportColumn columnDataFormatting="" columnDataFromString="TUBE_COLUMN" columnHeader="Tube Column"/>
<excelExportColumn columnDataFormatting="" columnDataFromString="TUBE_BARCODE" columnHeader="Tube Barcode"/>
</excelExportTemplate>
</fileExport>
However when I write this out on a windows computer the transformer is adding an extra \r into the outputted CDATA so I have:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<fileExport append="false" automaticExport="false" automaticExportWithErrors="false" exportDir="C:\Users\benn\Desktop" exportFileName="" exportType="text" splitFiles="false">
<exportTemplate><![CDATA[Date,RackBarcode,Row,Col,tubeBarcode,OrientationBarcode
<#list racks as rack>
<#list rack.containers as container>
${scandate?datetime},${rack.barcode},${container.textRow},${container.col + 1},${container.barcode},${rack.orientationBarcode}
</#list>
</#list>
]]></exportTemplate>
<scanTimeQuestionsTemplate><![CDATA[<#if scanTimeQuestionsEnabled>
Scan Time Questions
<#list scanTimeQuestions as question>
${question.shortName} : ${question.answer}
</#list>
</#if>
]]></scanTimeQuestionsTemplate>
<excelExportTemplate writeHeader="false">
<excelExportColumn columnDataFormatting="d/M/yyyy HH:mm" columnDataFromString="DATETIME" columnHeader="Scan Time"/>
<excelExportColumn columnDataFormatting="" columnDataFromString="RACK_BARCODE" columnHeader="Rack Barcode"/>
<excelExportColumn columnDataFormatting="" columnDataFromString="ORIENTATION_BARCODE" columnHeader="Orientation Barcode"/>
<excelExportColumn columnDataFormatting="" columnDataFromString="TUBE_ROW_TEXT" columnHeader="Tube Row"/>
<excelExportColumn columnDataFormatting="" columnDataFromString="TUBE_COLUMN" columnHeader="Tube Column"/>
<excelExportColumn columnDataFormatting="" columnDataFromString="TUBE_BARCODE" columnHeader="Tube Barcode"/>
</excelExportTemplate>
</fileExport>
So basically \r\n is becoming \r\r\n - I've seen some messages about Xalan doing this but I'm using whatever JDK 7 provides as the back engine; has anybody seen this and is there a property I can set to stop transformer putting an extra line break in my CDATA>
Upvotes: 1
Views: 439
Reputation: 109532
I have seen some verbose work-arounds (search "xalan newline"), so what I would do:
\n
(editor setting).System.setProperty("file.encoding", "\n");
Probably 1. suffices, as 2. is ugly.
Upvotes: 1