我有以下代码
const string xml = @"<?xml version=""1.0"" encoding=""utf-8"" ?>
<Revisions>
<Revision Key=""MIDTERM"">5850</Revision>
<Revision Key=""LONGTERM"">5850</Revision>
</Revisions>";
var key = "MIDTERM";
var _RevisionsXml = XDocument.Parse(xml, LoadOptions.PreserveWhitespace);
var revisionNode = _RevisionsXml
.Root
.Elements("Revision")
.FirstOrDefault(elem => elem.Attribute("Key").ToString() == key);
revisionNode始终为null,不确定我缺少的是什么。
答案 0 :(得分:2)
比较密钥时,您希望使用.Value
代替.ToString()
。
在属性上调用ToString()
将返回Key="MIDTERM"
,这主要用于调试目的。
如果没有名为NullReferenceException
的属性,请确保您的XML格式正确,或者在调用.Value
时可能会遇到Key
。
答案 1 :(得分:1)
您正在寻找Key属性的值:
var revisionNode = _RevisionsXml
.Root
.Elements("Revision")
.FirstOrDefault(elem => (string)elem.Attribute("Key") == key);