首页 > 解决方案 > 无法读取文档开头带有字符的 XML 文件

问题描述

我正在尝试从 XML 文件中读取数据。数据在文档的开头有字符(当我从 FTP 站点获取文件时,文档以这种方式出现)所以我以字符串形式读取,以便我可以用代码填充额外的字符。现在,当我在 notepad++ 或 word pad 中打开文件时,它打开得很好,当我想从我的程序中执行此操作时,问题就来了。

我尝试像往常一样同时使用 streamreader 和 File.ReadAllText() 方法,但似乎没有任何效果。当我从我的代码中运行它时,我得到的只是一些特殊字符

从记事本++查看

OpenFileDialog OpenDialog = new OpenFileDialog();
OpenDialog.ShowDialog();
var FileName = OpenDialog.FileName;
var FileString = File.ReadAllText(FileName);

我也尝试在从文件读取时更改编码类型,但它仍然不起作用

标签: c#

解决方案


这不是 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()检查流中的下一个字符而不使用它。


推荐阅读