Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将XslCompiledTransform与cdata节元素一起使用_C#_Xml_Xslt - Fatal编程技术网

C# 将XslCompiledTransform与cdata节元素一起使用

C# 将XslCompiledTransform与cdata节元素一起使用,c#,xml,xslt,C#,Xml,Xslt,我希望在输出XML中有CDATA部分。我尝试使用xsl:output的“cdata节元素”属性。但是,我的输出中没有CDATA using System; using System.Xml; using System.Xml.Xsl; using System.IO; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args)

我希望在输出XML中有CDATA部分。我尝试使用xsl:output的“cdata节元素”属性。但是,我的输出中没有CDATA

using System;
using System.Xml;
using System.Xml.Xsl;
using System.IO;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string stylesheet =
@"<xsl:stylesheet version=""1.0"" xmlns:xsl=""http://www.w3.org/1999/XSL/Transform"">
<xsl:output xmlns:t=""temp-uri"" cdata-section-elements=""t:text"" method=""xml""/>
<xsl:template match=""/"">
<text xmlns=""temp-uri""><xsl:value-of select="".""/></text>
</xsl:template>
</xsl:stylesheet>
";
            XmlReader reader = XmlReader.Create(new StringReader(stylesheet));
            XslCompiledTransform t = new XslCompiledTransform(true);
            t.Load(reader);

            XmlReader input = XmlReader.Create(new StringReader("<foo><![CDATA[<hello]]></foo>"));
            StringBuilder sb = new StringBuilder();

            XmlWriter results = XmlWriter.Create(new StringWriter(sb));
            t.Transform(input, null, results);

            Console.WriteLine(sb.ToString());
            Console.ReadLine();
        }
    }
}
使用系统;
使用System.Xml;
使用System.Xml.Xsl;
使用System.IO;
使用系统文本;
命名空间控制台应用程序1
{
班级计划
{
静态void Main(字符串[]参数)
{
字符串样式表=
@"
";
XmlReader=XmlReader.Create(新建StringReader(样式表));
XslCompiledTransform t=新的XslCompiledTransform(true);
t、 加载(读卡器);
XmlReader输入=XmlReader.Create(新StringReader(“”);
StringBuilder sb=新的StringBuilder();
XmlWriter results=XmlWriter.Create(新StringWriter(sb));
t、 转换(输入、空、结果);
Console.WriteLine(sb.ToString());
Console.ReadLine();
}
}
}
实际产量

 <?xml version="1.0" encoding="utf-16"?><text xmlns="temp-uri">&lt;hello</text>
你好 所需输出

<?xml version="1.0" encoding="utf-16"?><text xmlns="temp-uri"><!CDATA[<hello]]></text>


我在这里遗漏了什么?

必须通知您的XmlWriter当前的输出设置:

XmlWriter results = XmlWriter.Create(new StringWriter(sb), t.OutputSettings);
//---------------------------------------------------------^^^^^^^^^^^^^^^^