已创建XMLTextReader但XslCompiledTransform.Transform失败且字符无效

时间:2015-02-02 16:29:48

标签: c# xml

我的代码:

using (XmlTextReader inputReader = new XmlTextReader(xml, XmlNodeType.Document, new XmlParserContext(null, null, "en", XmlSpace.Default)))
        {
            XsltArgumentList arglist = new XsltArgumentList();
            GetXSLT().Transform(inputReader, arglist, outputStream);
        }

XmlTextReader创建得很好,在XML内部有一个垂直制表符的实体引用(

错误的行是对Transform的调用。它表示存在无效的XML字符(当然是垂直制表符)。

我尝试过使用以下文章中提到的方法:
Escape invalid XML characters in C#

我的问题是:如何使用.NET框架删除或忽略无效字符,如链接状态?

注意:某种方式并不涉及硬编码实体引用列表来替换(我已经这样做了,这很糟糕,我感觉很糟糕,我应该这样做)

1 个答案:

答案 0 :(得分:1)

尝试在阅读和写作时忽略无效的XML字符:

var readerSettings = new XmlReaderSettings() { CheckCharacters = false, ConformanceLevel = ConformanceLevel.Document };

using (var inputReader = XmlTextReader.Create(xml, readerSettings, new XmlParserContext(null, null, "en", XmlSpace.Default)))
{
    XsltArgumentList arglist = new XsltArgumentList();
    var xslt = GetXSLT();

    var writerSettings = xslt.OutputSettings.Clone();
    writerSettings.CheckCharacters = false;

    using (var outputWriter = XmlWriter.Create(outputStream, writerSettings))
    {
        xslt.Transform(inputReader, arglist, outputWriter);
    }
}