Can I configure the DataContractSerializer to not create optional (i.e. Nullable<> and List<>) elements in output XML?

后端 未结 2 1553
逝去的感伤
逝去的感伤 2021-02-07 15:26

I am using the new .NET 3.0 DataContractSerializer. I have both Nullable<> and List<> objects I am going to serialize. Example:

[DataContract(Na         


        
2条回答
  •  情书的邮戳
    2021-02-07 15:50

    I really needed the same thing, but applied globally to lots of fields in generated RIA classes. I'm not sure if this XML is acceptable to DataConstract for deserializing. But it is readable, which suites my purposes...

        public override string ToString()
        {
            var doc = XDocument.Parse(this.ToXML());
            WalkElement(doc.Root);
            return doc.ToString( SaveOptions.None );
        }
        void WalkElement(XElement e)
        {
            var n = e.GetNamespaceOfPrefix("i");
            if (n != null)
            {
                var a = e.Attribute(n + "nil");
                if (a != null && a.Value.ToLower() == "true")
                    e.Remove();
            }
            foreach (XElement child in e.Elements().ToList())
                WalkElement(child);
        }
    

提交回复
热议问题