Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.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# C语言中的XML解析异常#_C#_.net_Xml_Visual Studio_Webrequest - Fatal编程技术网

C# C语言中的XML解析异常#

C# C语言中的XML解析异常#,c#,.net,xml,visual-studio,webrequest,C#,.net,Xml,Visual Studio,Webrequest,我在解析XML文档中的一个特定值时遇到了一些问题。我使用的代码如下所示: WebResponse response = request.GetResponse(); Stream responseStream = response.GetResponseStream(); XDocument doc = XDocument.Load(responseStream); XElement root = doc.Root; ClassVars.LastTimeStamp = (int)root.Ele

我在解析XML文档中的一个特定值时遇到了一些问题。我使用的代码如下所示:

WebResponse response = request.GetResponse();
Stream responseStream = response.GetResponseStream();
XDocument doc = XDocument.Load(responseStream);
XElement root = doc.Root;
ClassVars.LastTimeStamp = (int)root.Elements("TIMESTAMP").Last();
但是,此代码正在生成以下异常:

“System.InvalidOperationException”类型的未处理异常 发生在System.Core.dll中

(完整的错误消息如下所示。)

坦率地说,我一辈子都不明白为什么。它出错的行是
ClassVars.LastTimeStamp=(int)root.Elements(“TIMESTAMP”).Last()行。我试图从以下XML解析此内容:

<REGION>
<MESSAGES>
<POST>
<TIMESTAMP>1439137652</TIMESTAMP>
<NATION>...</NATION>
<MESSAGE>
</MESSAGE>
</POST>
...
...
...
<POST>
<TIMESTAMP>1439137856</TIMESTAMP>
<NATION>...</NATION>
<MESSAGE>
...
</MESSAGE>
</POST>
</MESSAGES>
</REGION>

1439137652
...
...
...
...
1439137856
...
...

我想做的是从文件中的最后一篇文章中提取时间戳。有人能告诉我我做错了什么吗?这可能是非常明显的,但我就是看不到。

问题是您使用了错误的方法来检索
元素。仅返回子元素。在您的例子中,
有三层,因此您需要使用


问题是您使用了错误的方法来检索
元素。仅返回子元素。在您的例子中,
有三层,因此您需要使用


假设这是整个文档(头除外),REGION是root的唯一元素。
尝试改用子体。

假设这是整个文档(除了标题),REGION是root的唯一元素。
尝试改用后代。

你能粘贴错误消息吗?@Douglas:评论太长了,请看@TaW我太笨了,很抱歉!我还在WebRequest中使用测试密钥。谢谢你让我意识到呵呵!你能粘贴错误信息吗?@Douglas:评论太长了,请看@TaW我太笨了,太抱歉了!我还在WebRequest中使用测试密钥。谢谢你让我意识到呵呵!我认为一个更好的选择是学习并给出通向子元素的路径。这是一个更稳定的解决方案。@GreĝRos:我同意这将是更好的纪律,特别是如果路径验证很重要的话。另一方面,OP可能不关心确切的XML结构,希望代码在结构改变时仍能工作。@Douglas是正确的-我使用的API确实改变了公平的交易,我并不真正关心结构——我只需要在代码中将这一位解析为变量。我认为更好的选择是学习并给出子元素的路径。这是一个更稳定的解决方案。@GreĝRos:我同意这将是更好的纪律,特别是如果路径验证很重要的话。另一方面,OP可能不关心确切的XML结构,希望代码在结构改变时仍能工作。@Douglas是正确的-我使用的API确实改变了很多,我并不真正关心结构-我只需要在代码中将这一位作为变量进行解析。
ClassVars.LastTimeStamp = (int)root.Descendants("TIMESTAMP").Last();