Xml Serielization Remove tag null c#

alfinete

Power Member
bom dia

Tenho aqui uma questão sobre quando Temos um Xml com uma propriedade a null , retirar esse nó do mesmo

quero que qualquer prop que no meu xml venha "<nome/>" seja retirada do mesmo



Declaração das propriedades c#
________________________________________________________________________________________


Código:
        [DefaultValue(0)]
        public int NumberOfAdults { get; set; }
        [DefaultValue(null)]
        public int? NumberOfChildren { get; set; }


XML Gerado
_______________________________________________________________________________________

Código:
        <NumberOfAdults>1</NumberOfAdults>
        <NumberOfChildren />

transformação c#
doc traz o cml acima descrito
_______________________________________________________________________________________

Código:
XmlDocument  doc = RemoveNullFields(doc);


metodo utilizado para Retirar campos null
________________________________________________________
Código:
        public static XmlDocument RemoveNullFields(this XmlDocument xmldoc)
        {
            XmlNamespaceManager mgr = new XmlNamespaceManager(xmldoc.NameTable);
            mgr.AddNamespace("xsi", "http://www.w3.org/2001/XMLSchema-instance");

             XmlNodeList nullFields = xmldoc.SelectNodes("//*[@xsi:nil='true']", mgr);
            
            if (nullFields != null && nullFields.Count > 0)
            {
                for (int i = 0; i < nullFields.Count; i++)
                {
                    nullFields[i].ParentNode.RemoveChild(nullFields[i]);
                }
            }

            return xmldoc;
        }


Agradecia uma ajuda
 

alfinete

Power Member
Resolução possivel
......

Código:
         [DefaultValue(null)]
        public int? NumberOfChildren { get; set; }


xml gerado em relação a nossa propriedade
_______________________________________________________________
Código:
       <NumberOfChildren />


transformação
_______________________________________________________________
Código:
 XmlDocument doc = null;
 doc =  instrução coverter json para xmldocument

doc = RemoveNullFields(doc);



Código:
 public static XmlDocument RemoveNullFields(XmlDocument xmldoc)
        {
            XmlNamespaceManager mgr = new XmlNamespaceManager(xmldoc.NameTable);
            mgr.AddNamespace("xsi", "http://www.w3.org/2001/XMLSchema-instance");

             XmlNodeList nullFields = xmldoc.SelectNodes(@"//*[not(node())]");
           
            if (nullFields != null && nullFields.Count > 0)
            {
                for (int i = 0; i < nullFields.Count; i++)
                {
                    nullFields[i].ParentNode.RemoveChild(nullFields[i]);
                }
            }

            return xmldoc;
        }
 
Última edição:
Topo