2016-03-28 13 views
0

asp.net 5コントローラでオブジェクトをxmlとして返しています。オブジェクトはリストであるプロパティを持ち、リストのルート要素を無視するシリアライザが必要です。私はこの投稿の提案に従いましたUse XML serialization to serialize a collection without the parent nodeしかし、何らかの理由でそれが動作しない場合でも、[XmlElement( "newName")]を使用して名前を変更しようとすると無視されます。Microsoft.AspNet.Mvc.Formatters.XmlによってXmlElement属性が無視されています

それ?

public partial class Doc { 

    [XmlElement("Detalle")] 
    public List<DefTypeDetalle> Detalle { get; set; } 

} 

public partial class DefTypeDetalle { 

    public Id { get; set; } 
} 

は、出力は私が

<Doc> 
    <Detalle> 
     <DefTypeDetalle> 
      <Id>1<Id/> 
     </DefTypeDetalle> 
     <DefTypeDetalle> 
      <Id>2<Id/> 
     </DefTypeDetalle> 
    </Detalle> 
</Doc> 

を取得し、私が欲しいのは

<Doc> 
    <Detalle> 
     <Id>1<Id/> 
    </Detalle> 
    <Detalle> 
     <Id>2<Id/> 
    </Detalle> 
</Doc> 

おかげ

+0

を使用するために必要な、私はコードを見ることができます問題の? – Jace

+0

OK、私もコードとXMLを追加しました –

答えて

1

を試してみて、私はStartup.cs

mvcBuilder.AddXmlDataContractSerializerFormatters(); 

に持っていたとXMLシリアライザ

mvcBuilder.AddXmlSerializerFormatters(); 
0

それはあなたがデータをシリアライズしている方法かもしれないです。だから、問題は、私が使っていたフォーマッタた

XmlSerializer serializer = new XmlSerializer(typeof(List<DefTypeDetalle>)); 
    using (TextWriter writer = new StreamWriter(@"your_directory") 
    { 
     serializer.Serialize(writer, your_list) 
    } 
+0

MVCプロジェクトですので、私は手動でシリアル化していません。コントローラーはxmlを出力します。要求のヘッダーに問い合わせます。 –

+0

[ XmlElement]に名前の指定がありませんか?リストから配列に変更するとどうなりますか? – Jace

+0

属性を持たない同じ出力で、以前は配列として持っていました。( –

関連する問題