2015-05-08 255 views
0

我將以下xml解析到XElement命名條目中。XElement是否支持nil = true

<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; 

年齡現在是「」,我不知道是否有某種建立的方式來得到一個空的,而不是「」?

大多數搜索都會討論如果條目不在xml中,但我總是會像這樣填充空值。

回答

3

不,我不相信有什麼事,對於這一點,但它會死很容易編寫擴展方法:

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; 
} 

或者使用可空布爾轉換:

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