我正在尝试创建一个简单的应用程序,它使用 SAX (XmlTextReader) 从流中读取 XML,该流不仅包含 XML,还包含其他数据,例如二进制 blob 和文本。流的结构只是基于块的。
进入我的阅读功能时,流正确定位在 XML 的开头。我已将问题简化为以下代码示例:
string xml = "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?><Models />" + (char)0x014;
XmlTextReader reader = new XmlTextReader(new StringReader(xml));
reader.MoveToContent();
reader.ReadStartElement("Models");
由于字符串末尾的 0x014,这几行在调用 ReadStartElement 时会导致异常。
有趣的是,当使用以下输入时,代码运行得很好:
string xml = "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?><Models></Models>" + (char)0x014;
由于它的大小,我不想阅读整个文档,也不想更改输入,因为我需要保持向后兼容旧数据输入。
起初我能想到的唯一解决方案是自定义流阅读器,它不会在最后一个结束标签之后继续阅读,但这将涉及一些主要的解析工作。
您对如何解决此问题有任何想法吗?我已经尝试过使用 LINQ 的 XDocument,但也失败了。
非常感谢您,干杯,
罗莫特