0

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

とても簡単かもしれませんが、わかりません...

よろしく、

ヘラス

4

1 に答える 1

4

ms.Positionを 1 ではなく 0 に設定します

C# 配列はゼロ インデックスです。

于 2012-09-25T07:06:12.010 に答える