2017-05-07 4 views
0

私は2つのプロパティ(xsdからxsd.exeを使用して生成されます)を持つクラスを用意して、それらを埋め込み、以下のコードでxmlにシリアル化しようとします。フィールドを表示しないXMLSerializerを使用してクラスをシリアライズするC#

私はそれの要素でXMLを取得することができるが、私は

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(); 

が割り当てられている、得られたXMLこれは持っていません

<?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> 

でそのフィールド/要素なしフィールド私は設定しました。

+0

に設定する必要がありますDataLimited' 。 'IsDataLimitedSet'は' XmlIgnore'で装飾されていて、それが表示されないように期待しています。 – rene

+0

@rene yep私はそれを見つけましたが、なぜこのSystem.Xml.Serialization.XmlIgnoreAttribute()アノテーションにヒントが追加されていますか? – sudhir

+0

はい、xsi:nil = "true"を持つ要素、またはminoccurs = 0を持つ要素に対してIIRCが追加され、クラスのnull以外の型にマップされます。デシリアライゼーション中に、要素がペイロードに存在するかどうかに応じて、Is [NameofProperty] Setがtrueまたはfalseのいずれであるかにかかわらず、null不可能な型はデフォルト値を持ちます。 – rene

答えて

-1

フィールドにデータを入力する必要があります。シリアライザは、塗りつぶされていないすべてのフィールドを無視しています。あなたはXSDを実行するとき= 0のminOccurs属性き フィールド:原因にも実体を充填した後、我々はプロパティ

ソリューションを見ることができないと

0

コメントで述べたように、我々は要素のためminOccurs=0を持っているときに我々は注釈System.Xml.Serialization.XmlIgnoreAttribute()を取得1のプロパティであり、もう一つは、直列化、我々は指定されたプロパティを有効にする必要がありながら、XMLで表示される値のため

だから、「指定した」サフィックスを持つプロパティのbool値である2つのプロパティは、クラスで生成された各要素に対してをexeファイルその要素の

例えば:私はプロパティIsDataLimitedSetを持っていたよう は、クラス内で発生IsDataLimitedSetSpecifiedという名前の1つの以上の特性もあるので、我々は `あなたのプロパティの値を供給する必要が真

OrganizationDetail objOrgDet = new OrganizationDetail(); 
objOrg.IsDataLimitedSetSpecified =true; 
objOrg.IsDataLimitedSet =true; 
関連する問題