J'ai une classe avec deux propriétés (qui sont générés à partir xsd à l'aide xsd.exe
) et de les remplir et d'essayer sérialisation XML avec le code ci-dessous.sérialisation une classe en utilisant XMLSerializer ne pas montrer les champs C#
Je suis en mesure d'obtenir xml avec des éléments en elle, mais sans ses champs/éléments que j'ai assigné
OrganizationDetail objOrgDet = new OrganizationDetail();
objOrg.IsDataLimitedSet =true;
Organization objOrg = new Organization();
objOrg.Orgainzation_Detail = objOrgDet;
XmlSerializer serailizer = new XmlSerializer(typeof(Organization));
StringWriter strwritter = new StringWriter();
serailizer.Serialize(strwritter, objOrg);
string xml = strwritter.ToString();
Et le xml résulté est
<?xml version="1.0" encoding="utf-16"?>
<Organization xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Organization_DETAIL xmlns="http://www.mismo.org/residential/2009/schemas" />
</Organization>
Cela n'a pas champ que j'ai défini.
Vous devez fournir une valeur pour votre propriété 'DataLimited' . Je m'attends à 'IsDataLimitedSet' être celui qui est décoré avec' XmlIgnore' pour l'empêcher d'apparaître. – rene
@rene yep Je viens de le trouver, mais pourquoi cette annotation System.Xml.Serialization.XmlIgnoreAttribute() est-elle ajoutée? – sudhir
Oui, il est ajouté, IIRC, pour les éléments qui ont un xsi: nil = "true" ou un minoccurs = 0 et qui correspondent à un type non-nul sur votre classe. Lors de la désérialisation, le type non nullable aura sa valeur par défaut, que l'ensemble Is [NameofProperty] soit vrai ou faux, selon que l'élément était présent ou non dans la charge utile. Merci – rene