XslCompiledTransorm 转换将右单引号标记为编码 iso-8859-1/UTF-8 中的无效字符
我正在尝试使用 SSIS 包脚本任务和 XSLT 为来自第三方系统的每个 XML 文件生成一个文本文件。有时,这些 XML 文件中会出现一些特殊字符。其中一个字符是右单引号 '。因此,脚本任务失败,并显示消息给定编码中的字符无效。 XML 如下所示:
<firstelement>
<Id>1112</Id>
<State>AP</State>
<City>E’Godavari</City>
</firstelement>
XSLT 是
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
<xsl:output method="text" encoding="iso-8859-1"/>
<xsl:template match="/firstelement">
<xsl:text>|@|Id|@|State|@|City|@|</xsl:text>
<xsl:text>
</xsl:text>
|@|<xsl:value-of select="Id"/>|@|<xsl:value-of select="State"/>|@|<xsl:value-of select="City"/>|@|
</xsl:template>
</xsl:stylesheet>
脚本任务代码如下:
var xmlPath = @"C:\Cities.xml";
var xsltPath = @"C:\Cities.xslt";
var outputTxt = @"C:\Cities.txt";
var xslCompiledTransformObj = new XslCompiledTransform();
xslCompiledTransformObj.Load(xsltPath);
xslCompiledTransformObj.Transform(xmlPath, outputTxt);
我尝试将 XSLT 文件的 xsl:output
标记中的编码更改为 UTF-8,但仍然遇到相同的错误。
I am trying to generate a text file for each XML file from a third party system using SSIS package script task and XSLT. Sometimes few special characters appear in these XML files. One such character is the right single quotation mark ’. Because of this the script task fails with message Invalid Character in the given encoding.
XML looks like below:
<firstelement>
<Id>1112</Id>
<State>AP</State>
<City>E’Godavari</City>
</firstelement>
XSLT is
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
<xsl:output method="text" encoding="iso-8859-1"/>
<xsl:template match="/firstelement">
<xsl:text>|@|Id|@|State|@|City|@|</xsl:text>
<xsl:text>
</xsl:text>
|@|<xsl:value-of select="Id"/>|@|<xsl:value-of select="State"/>|@|<xsl:value-of select="City"/>|@|
</xsl:template>
</xsl:stylesheet>
The Script task code is below:
var xmlPath = @"C:\Cities.xml";
var xsltPath = @"C:\Cities.xslt";
var outputTxt = @"C:\Cities.txt";
var xslCompiledTransformObj = new XslCompiledTransform();
xslCompiledTransformObj.Load(xsltPath);
xslCompiledTransformObj.Transform(xmlPath, outputTxt);
I have tried changing the encoding to UTF-8 in XSLT file's xsl:output
tag but i was still getting same error.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
请尝试以下c#。它保证考虑 XSLT 的 OutputSettings。
c#
Please try the following c#. It guaranties that XSLT's OutputSettings are taken into account.
c#
下面的代码对我有用。我使用 ANSI 1252 编码,然后使用 Regex 来查找和替换特殊字符。
The below code has worked for me. I used ANSI 1252 encoding and then Regex to find and replace the special character.