无法读取文档开头带有字符的XML文件

时间:2019-02-08 15:32:13

标签: c#

我正在尝试从XML文件读取数据。数据在文档的开头带有字符(当我从FTP站点获取文件时,文档以这种方式出现),因此我将其读取为字符串,以便可以用代码填充多余的字符。现在,当我在notepad ++或word pad中打开文件时,它打开得很好,当我想从程序中执行该文件时就会出现问题。

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

View from notepad++

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

我还试图从文件中读取时更改编码类型,但仍然无法正常工作

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

您必须从文件的开头删除那些流氓字符。试试这个:

DiffMaxChange