1

Web API アプリケーションで DataContractSerializer を使用しており、アクションで以下のようにデータ型を返しています。

public class Event
{
  public string Name {get; set;}
  public IList<Division> Divisions {get;set;}
}

シリアル化すると、以下の xml が返されます。

    <Event xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07
/EventTypeNameSpace">
        <Name>some name</Name>
        <Divisions i:nil="true" />
    </Event>

1) 2 つの xmlns:i および xmlns 属性を返すのはなぜですか? どうすればそれらを除外できますか?

2) null の場合、部門を xml から除外するにはどうすればよいですか?

4

1 に答える 1

1

1: " http://schemas.datacontract.org/2004/07 " は、データ コントラクト シリアライザーによってシリアル化された型によって使用される既定の名前空間です。それが気に入らない場合は、契約を変更してください。「http://www.w3.org/2001/XMLSchema-instance」では、「nil」を特別な値として定義しています

2: コントラクトを適切に定義することによって

[DataContract(Namespace="")]
public class Event
{
    [DataMember]
    public string Name { get; set; }

    [DataMember(EmitDefaultValue=false)]
    public IList<Division> Divisions { get; set; }
}

ただし、追加する必要があります-レイアウトがどのように見えるかを厳密に制御したい場合は、おそらくでXmlSerializerはなく、を使用する必要がありますDataContractSerializer

于 2013-05-30T14:25:27.560 に答える