2015-05-08 1 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; 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^