【发布时间】:2011-06-16 04:15:49
【问题描述】:
这是我的代码:
XElement transformed = new XElement("stuff");
using (XmlWriter writer = transformed.CreateWriter())
{
_xslt.Transform(section.CreateReader(), writer);
}
其中_xslt 是XslCompiledTransform,section 是XElement。
转换后,作者的内容中 <。这不是 xsl 的问题,因为如果我使用保存到文件的 XmlWriter,我看不到这种转义。 xsl 有几个<xsl:value-of ... disable-output-escaping="yes"> 转换,这些是导致问题的。同样,如果我将转换写入文件,则没有问题。以为我可能需要更改编写器的一些设置,但XElement.CreateWriter 没有采用XmlWriterSettings 的构造函数。
有没有办法做到这一点,而无需转换为字符串或字符串生成器,然后重新解析回 XElement?
新信息
我将代码改为:而不是 XmlWriter:
using (StreamWriter writer = new StreamWriter())
{
_xslt.Transform(section.CreateReader(), null, writer);
}
StreamWriter 具有我想要的非转义字符,现在,如何将其加载回我的 XElement?
索取更多信息
以下是适用于 StreamWriter 的 xsl,但不适用于 XmlWriter:
<xsl:template match="processing-instruction(mark_start')">
<xsl:text disable-output-escaping="yes"><addtext></xsl:text>
</xsl:template>
<xsl:template match="processing-instruction('mark_end')">
<xsl:text disable-output-escaping="yes"></addtext></xsl:text>
</xsl:template>
不,我无法控制 xml,所以我坚持使用给定的处理指令。总之,DOE 可以使用 StreamWriter,但不能使用 XmlWriter。
请求样本 XML
这是我正在处理的 xml 的样子:
<text>
this is some text
<?mark_start>
and some new text
<?mark_end>
and the rest of the text
</text>
【问题讨论】:
-
请显示您正在转换的部分 XML,以及转换后的 XML。
-
我在上面添加了更多信息。
-
@Wave: 请发布错误的 XML
-
@JS:正如我在问题中提到的,我得到了 <而不是
-
@Wave: 为什么不发布 XML 让我们看看发生了什么?为什么要让我们猜测?
标签: xml character-encoding xslt