Вот мой код:
XElement transformed = new XElement("stuff");
using (XmlWriter writer = transformed.CreateWriter())
{
_xslt.Transform(section.CreateReader(), writer);
}
, где _xslt
- это XslCompiledTransform
, а section
- это XElement
.После преобразования у писателя есть содержимое, где <было изменено на <code><.Это не проблема с 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?
Запрос дополнительной информации
Вот xsl, который отлично работает сStreamWriter, но не с 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>