XML 在 C# 中解析异常

XML parsing exception in C#

我在解析 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();

但是,此代码生成以下异常:

An unhandled exception of type 'System.InvalidOperationException' occurred in System.Core.dll

(完整的错误信息是 here。)

坦率地说,我这辈子都想不通为什么。它出错的行是 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>

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

问题是您使用了错误的方法来检索 <TIMESTAMP> 元素。 XElement.Elements only returns child elements. In your case, <TIMESTAMP> is three levels deep, so you need to use Descendants 相反。

ClassVars.LastTimeStamp = (int)root.Descendants("TIMESTAMP").Last();

假设这是整个文档(header除外),REGION 是 root 的唯一元素。 尝试使用 Descendants