c# - 无法读取文档开头带有字符的 XML 文件
问题描述
我正在尝试从 XML 文件中读取数据。数据在文档的开头有字符(当我从 FTP 站点获取文件时,文档以这种方式出现)所以我以字符串形式读取,以便我可以用代码填充额外的字符。现在,当我在 notepad++ 或 word pad 中打开文件时,它打开得很好,当我想从我的程序中执行此操作时,问题就来了。
我尝试像往常一样同时使用 streamreader 和 File.ReadAllText() 方法,但似乎没有任何效果。当我从我的代码中运行它时,我得到的只是一些特殊字符
OpenFileDialog OpenDialog = new OpenFileDialog();
OpenDialog.ShowDialog();
var FileName = OpenDialog.FileName;
var FileString = File.ReadAllText(FileName);
我也尝试在从文件读取时更改编码类型,但它仍然不起作用
解决方案
这不是 XML 文件。正如其他人解释的那样,它是一个二进制文件,在某个时间点后包含 XML。
如果您跳过二进制部分,您仍然可以读取 XML 内容。例如,您可以使用 FileStream 和 StreamReader 打开它并阅读,直到到达 XML 文本的开头。
var tagAsInt=(int)'<';
using(var stream=File.OpenRead(pathToFile))
using(var sr=new StreamReader(stream))
{
while (sr.Peek() !=tagAsInt)
{
sr.Read();
}
var xml=new XmlDocument();
xml.Load(sr);
}
Peek()
检查流中的下一个字符而不使用它。
推荐阅读
- javascript - addEventListener:如何限制回调函数?
- php - 如何在usgin googlechart(或chart.js等)的每一行中显示图表
- sql-server - 具有不同工作表选项卡的不同服务器的结果
- python - 如何从python中的输入中随机选择
- c++ - int64_t 和类似类型是否有可移植的文字后缀?
- java - 使用 super() 构造函数时未初始化空白最终字段
- django - Django - 解析作为request.GET上下文参数接收的多选值到模板的问题
- javascript - 如何使用布尔条件在 jQuery datepicker 中禁用以前的日期?
- react-native - 在 ItemSeparatorComponent 中使用索引
- python - pyinstaller 要求在 venv 和 -p 中确实提供了依赖项