用XML写出变音符号?

时间:2012-07-13 10:52:38

标签: c# .net xslt utf-8

我需要写“& #D;”相当于一个变音字符到xml。 例如,如果字符串是“für”,那么预期输出是“fürü相当于ü

以下是我目前的代码:

private bool WriteOutXMLFile(string xsltFileName, XsltArgumentList argsList, string outputFile)
    {

            XslCompiledTransform transform = new XslCompiledTransform(true);
            transform.Load(xsltFileName);

            using(StreamWriter sw = new StreamWriter(outputFile,false,Encoding.UTF8))
            {
                transform.Transform(this.InputFilePath, argsList, sw);
            }

            return true;
        }

这是XSLT:

<?xml version="1.0" encoding="UTF-8" ?>

 <xsl:stylesheet version="1.0"  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
            xmlns:ms="urn:schemas-microsoft-com:xslt"
  xmlns:dt="urn:schemas-microsoft-com:datatypes">
  <xsl:output method="xml" />

<xsl:param name="InsideSales1"></xsl:param>
<xsl:param name="InsideSales2"></xsl:param>
<xsl:template match="@*|node()">
<xsl:copy>
  <xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>

 <!--Project output nodes-->
 <!--Calculation Number-->
 <xsl:template match="kalkulationsnummer" >
 <xsl:element name="kalkulationsnummer">
  <xsl:value-of select="$CalculationNumber" />
</xsl:element>
</xsl:template>
</xsl:stylesheet>

出于空间考虑,我删除了很多参数。

有人可以帮忙吗?

问候。

大家好, 我用过     System.Web.HttpUtility.HtmlEncode 将umlaut字符添加到argsList时获取所需值的方法。这是一种更快速的做事方式,但它可能无法正常工作,因为它没有按我的要求进行测试。 一个更好的方法是使用一个字节数组,在这篇文章中建议。 感谢所有回复的人。

2 个答案:

答案 0 :(得分:2)

只需使用

<xsl:output encoding="us-ascii"/>

在您的C#代码中尝试:

using(StreamWriter sw = new StreamWriter(outputFile,false,Encoding.ASCII))     

答案 1 :(得分:1)

首先,使用us-ascii作为xsl:output编码,如Dimitre所建议的那样。其次,将转换输出发送到字节流目标,而不是字符流目标。如果您使用字符流目标(Writer),XSLT处理器将不会将字符编码为字节,它将把它留给Writer,并且Writer不知道有关XML或XML如何逃避不可编码的字符。