[英]xmltextwriter transforms special characters
我在xslt文件轉換的結果中轉換了特殊字符。
有誰之前經歷過這個嗎?
在源文檔中有一個&
字符&
其結果顯示為&
。 即使結果,我也需要原始字符&
字符。
XmlDataDocument dd = new XmlDataDocument(ds);
XsltSettings settings = new XsltSettings();
settings.EnableDocumentFunction = true;
settings.EnableScript = true;
XslCompiledTransform transform = new XslCompiledTransform();
transform.Load(XmlReader.Create(new StringReader(transformSource.Transform)), settings, new XmlUrlResolver());
XsltArgumentList a = new XsltArgumentList();
a.AddExtensionObject("http://www.4plusmedia.tv", new TransformationHelper());
using (XmlTextWriter writer = new XmlTextWriter(path, System.Text.Encoding.UTF8))
{
writer.Formatting = Formatting.Indented;
transform.Transform(dd, a, writer);
}
您的輸出部分正在using (XmlTextWriter writer = ...) { ... }
這表明您的輸出是 XML。 您可以使用XSLT生成純文本,這會有所不同。
對於XML和HTML輸出, &
編碼是必要且必不可少的。
在某個階段,將使用您的Xml元素的值,這是(和何時) &
再次成為&
。
在源文檔中有一個&字符,其結果顯示為
&
。
不要驚慌,因為沒有問題 :這與字符&
完全相同,因為它應該在任何格式良好的XML文檔中顯示。
您可以看到這是完全相同的字符,獲取節點的字符串值並輸出它-您將看到輸出&
。
另一種確定這只是&
字符的方法是在XSLT中將輸出方法設置為“ text”時將其輸出。 這是一個小的完整示例:
XML文檔 :
<t>M & M</t>
轉型 :
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="/*">
<xsl:value-of select="."/>
</xsl:template>
</xsl:stylesheet>
結果 :
M & M
如果希望XslCompiledTransform作為XSLT轉換的結果輸出純文本文件,則不應轉換為創建的XmlTextWriter,而應轉換為FileStream或TextWriter 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.