XSLT转换后引导非法字符

时间:2012-09-25 06:45:17

标签: c# asp.net xslt

在XSLT转换之后,我不断得到(似乎)与字符编码有关的主要问号,但我无法摆脱它们。我尝试了所有不同的编码,但它没有帮助。当我序列化对象时,我坚持使用内存中的xml源。

这是我的代码(尽可能短地重现问题)

var xd = new XmlDocument();
xd.LoadXml(@"<?xml version=""1.0"" encoding=""utf-8""?><Test><AAA>AAA</AAA></Test>");

var xslt = new System.Xml.Xsl.XslCompiledTransform();
xslt.Load(Server.MapPath("/Transformations/Test.xslt"));

using (var ms = new MemoryStream())
{
    xslt.Transform(xd, null, ms);
    ms.Position = 1;

    using (var sr = new StreamReader(ms, System.Text.Encoding.UTF8, true))
    {
        string s = sr.ReadToEnd();
    }
}

这是XSLT:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
    <xsl:output method="text"  indent="no"/>
    <xsl:template match="Test">
        BBB<xsl:value-of select="AAA" />CCC
    </xsl:template>
</xsl:stylesheet>

产地:

��\r\n\t\tBBBAAACCC\r\n\t

这可能很简单,但我无法理解......

此致

赫拉斯

1 个答案:

答案 0 :(得分:4)

ms.Position设置为0而不是1

C#数组是零索引。