簡體   English   中英

xmltextwriter轉換特殊字符

[英]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 &amp; 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,而應轉換為FileStreamTextWriter

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM