我正在尝试使用XSLT将CSV(逗号分隔文件)转换为XML。
CSV示例:
AcctEntryId,ValueDate,Entity,Folder,DenomCcy,FunctCcy
321,2017-08-29,ABC NY,My Portfolio/PAC,BR,US
322,2017-08-30,ABC NY,My Portfolio/PBC,BR,US
323,2017-08-31,ABC NY,My Portfolio/PCC,BR,US
字符串
需要输出的XML:
<?xml version="1.0" encoding="utf-8"?>
<ProcessResponse xmlns="http://com.test.ws/">
<ProcessResult><Data DataNodeName="CData" DataType="TEXT"><CData><![CDATA[AcctEntryId,ValueDate,Entity,Folder,DenomCcy,FunctCcy
321,2017-08-29,ABC NY,My Portfolio/PAC,BR,US
322,2017-08-30,ABC NY,My Portfolio/PBC,BR,US
323,2017-08-31,ABC NY,My Portfolio/PCC,BR,US
]]></CData></Data>
</ProcessResult>
</ProcessResponse>
型
我想从SAP中的AL11文件夹中选择CSV文件。xsltMap后的最终输出,我希望它是上面指定的所需格式的XML文件。
请您指导我如何编写XSLT以基于示例CSV数据生成上述XML。
2条答案
按热度按时间h43kikqp1#
这是XSLT-2.0或更高版本的解决方案。我不知道SAP是否支持这一点。如果没有,请参阅下面的XSLT-1.0技巧。
您可以将XSLT-2.0函数
unparsed-text()
与xsl:analyze-string
的RegEx功能结合使用:字符串
输出是如所需的,虽然它的要求似乎有点奇怪,我.
型
如果您仅限于XSLT-1.0,则可以使用 Entity Reference 作为一种技巧,如in this SO answer所述。
6tdlim6h2#
下面是不使用XSLT将CSV转换为XML的方法。所需的XML相当原始,因为它只有一个子节点,所以我认为XSLT在这里是多余的。
字符串
只要运行这个代码片段,只要你的CSV位于
C:\usr\sap\erp\sys\src\
目录中,结果XML将被放在同一目录中。