2013-08-29 13 views
5

Obecnie poniższy kod omija właściwości zerowe podczas serializacji. Chcę wartości o wartości null właściwości w wyjściowym xml jako puste elementy. Przeszukałem sieć, ale nie znalazłem nic przydatnego. Każda pomoc będzie doceniona.Jak uwzględnić właściwości null podczas serializacji xml

 var serializer = new XmlSerializer(application.GetType()); 
     var ms = new MemoryStream(); 
     var writer = new StreamWriter(ms); 
     serializer.Serialize(writer, application); 
     return ms; 

Przepraszam, zapomniałem wspomnieć, że chcę uniknąć dekoracji atrybutów.

+1

Kilka powtórzeń: [XML serializacji i wartość null - C#] (http://stackoverflow.com/questions/711723/xml-serialization-and -null-value-c-sharp) i [XmlSerializer. Przechowywać właściwości pustych ciągów?] (Http://stackoverflow.com/questions/10733731/xmlserializer-keep-null-string-properties) –

+0

Dlaczego chcesz to zrobić? Nie ma to dla mnie sensu. –

+0

Ostrożne, puste elementy nie są równoważne_ do nieistniejących/pustych elementów. Na przykład, XML serializując własność 'string', pusty element wytworzy pusty ciąg' '" '(' String.Empty') dla tej właściwości, gdzie jako nieistniejący (lub element z 'xsi: nil = "true" atrybut "atrybut" wytworzy wartość odniesienia "null" dla tej samej właściwości. –

Odpowiedz

7

Czy możesz kontrolować przedmioty, które mają być serializowane?
Korzystanie

[XmlElement(IsNullable = true)] 
public string Prop { get; set; } 

można reprezentować jako <Prop xsi:nil="true" />

0

Można użyć także użyć następującego kodu. Wzór jest ShouldSerialize{PropertyName}

public class PersonWithNullProperties 
{ 
    public string Name { get; set; } 
    public int? Age { get; set; } 
    public bool ShouldSerializeAge() 
    { 
     return true; 
    } 
} 

    PersonWithNullProperties nullPerson = new PersonWithNullProperties() { Name = "ABCD" }; 
    XmlSerializer xs = new XmlSerializer(typeof(nullPerson)); 
    StringWriter sw = new StringWriter(); 
    xs.Serialize(sw, nullPerson); 

XML

<?xml version="1.0" encoding="utf-16"?> 
<Person xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http:// 
www.w3.org/2001/XMLSchema"> 
    <Name>ABCD</Name> 
    <Age xsi:nil="true" /> 
</Person> 
+0

https://msdn.microsoft.com/en-us/library/53b8022e(v=vs.110).aspx – Anand

Powiązane problemy