我需要写“& #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时获取所需值的方法。这是一种更快速的做事方式,但它可能无法正常工作,因为它没有按我的要求进行测试。 一个更好的方法是使用一个字节数组,在这篇文章中建议。 感谢所有回复的人。
答案 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如何逃避不可编码的字符。