XElement 是否内置了对 nil=true 的支持

Does XElement have built in support for nil=true

我将以下 xml 解析为名为条目的 XElement。

<Person>
  <Name>Ann</Name>
  <Age i:nil="true" xmlns:i="http://www.w3.org/2001/XMLSchema-instance" />
</Person>

获取年龄属性时我这样写:

        var entry =
            XElement.Parse(
                "<Person><Name>Ann</Name><Age i:nil=\"true\" xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\" /></Person>");
        var age = entry.Element("Age").Value;

age 现在是 "",我想知道是否有某种构建方法可以获取 null 而不是 ""?

如果条目不在 xml 中,大多数搜索都会讨论,但我总是这样填写空值。

不,我不相信这有什么用,但是写一个扩展方法会非常容易:

private static readonly XNamespace ns = "http://www.w3.org/2001/XMLSchema-instance";

public static string NilAwareValue(this XElement element)
{
    XAttribute nil = element.Attribute(ns + "nil");
    return nil != null && (bool) nil ? null : element.Value;
}

或者使用可为空的 bool 转换:

public static string NilAwareValue(this XElement element)
{
    return (bool?) element.Attribute(ns + "nil") ?? false ? null : element.Value;
}