Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在c#中仅从文件中获取xml?_C#_Xml - Fatal编程技术网

如何在c#中仅从文件中获取xml?

如何在c#中仅从文件中获取xml?,c#,xml,C#,Xml,我在使用XmlReader解析文件时遇到问题。我有一个包含如下信息的文件: <Users> <User> <Email>email</Email> <Key>23456</Key> </User> </Users> asdfsof48f43uf489f3yf3y39fh3f489f3hf94[t]45.54tv,]5t 我在加密字节开始的第行得到了“System.Xml.xmleexception”

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

<Users>
<User>
<Email>email</Email>
<Key>23456</Key>
</User>
</Users>
asdfsof48f43uf489f3yf3y39fh3f489f3hf94[t]45.54tv,]5t
我在加密字节开始的第行得到了“System.Xml.xmleexception”。
我的问题是:如何仅检索xml部分和byte[]部分?

如果加密数据始终是最后一行,您可以使用下面的代码段来读取数据的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
}

你可以做字符串解析

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

myFile = myFile.Substring(start, end-start);
int开始,结束;
字符串myFile=File.ReadAllText(“…”);
start=myFile.IndexOf(“”);
end=myFile.IndexOf(“”+8;
myFile=myFile.Substring(start,end-start);

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

为什么
字节[]
数组不包含XML标记?谁控制文件的生成,您能说服他们生成更有用的文件格式,例如,两个单独的文件或将最终数据放在XML中?文件是否发布为整个XML。发布的部分不是格式良好的xml,因此如果没有更多信息,人们会认为该文件无效。它始终是根节点吗?我认为
XmlReader.ReadSubTree()
是一种有用的方法。使用此选项,您只能读取“用户”树,而不会读取更多内容。
int start, end;
string myFile = File.ReadAllText("...");
start = myFile .IndexOf("<Users>");
end = myFile .IndexOf("</Users>") + 8;

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