如何从c#中的文件中只获取xml?

时间:2017-05-27 14:27:29

标签: c# xml

我在使用XmlReader解析文件时遇到问题。我有一个包含以下信息的文件:

<Users>
<User>
<Email>email</Email>
<Key>23456</Key>
</User>
</Users>
asdfsof48f43uf489f3yf3y39fh3f489f3hf94[t]45.54tv,]5t

文件包含xml值,然后是byte []数组中的加密数据。 我遇到的问题是当我使用时:

 using (var reader = XmlReader.Create(fileName))
        {
            while (reader.Read())
            {
                //parsing
            }
        }

我在加密字节开始的行处得到'System.Xml.XmlException'。 我的问题是:如何只检索xml部分而只检索byte []部分?

2 个答案:

答案 0 :(得分:0)

如果加密数据始终是最后一行,您可以使用下面的代码段只读取XML部分数据,因为XML数据的大小有限

var fileLines = File.ReadAllLines(@"c:\temp\file.txt");
var xmlFromFile = string.Join("", fileLines, 0, fileLines.Length - 1);
using (var reader = XmlReader.Create(new StringReader(xmlFromFile)))
{
    // Your logic goes here
}

答案 1 :(得分:0)

你可以做字符串解析...

int start, end;
string myFile = File.ReadAllText("...");
start = myFile .IndexOf("<Users>");
end = myFile .IndexOf("</Users>") + 8;

myFile = myFile.Substring(start, end-start);

此时,您可以根据需要将其加载到xml文档中。这一切都取决于您对文件格式100%确定。这是一个非常脆弱的答案,所以如果您对输入文件没有完全信任,请不要使用它。