【问题标题】:Why XDocument Elements is always null为什么 XDocument 元素始终为空
【发布时间】:2011-07-19 11:35:51
【问题描述】:

我有以下代码

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 始终为空,不确定我缺少什么。

【问题讨论】:

    标签: c# linq-to-xml xelement


    【解决方案1】:

    在比较密钥时,您想使用.Value 而不是.ToString()

    在属性上调用ToString()会返回Key="MIDTERM",主要用于调试目的。

    确保您的 XML 格式正确,否则如果没有名为 Key 的属性,则在调用 .Value 时可能会遇到 NullReferenceException

    【讨论】:

    • 谢谢,关于一个简单的错误,我稍后能弄清楚。
    【解决方案2】:

    您正在寻找 Key 属性的

    var revisionNode = _RevisionsXml
                            .Root
                            .Elements("Revision")
                            .FirstOrDefault(elem => (string)elem.Attribute("Key") == key);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-24
      • 2016-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多