2017-03-08 11 views
-2

私はこのように、Web APIのXML結果を受け取る:フォーマットのWeb API結果

<ArrayOfResult ....> 
<Result> 
<Id> 
<FirstName></FirstName> 
<LastName></LastName> 
<MiddleName></MiddleName> 
<Address1></Address1> 
<Address2></Address2> 
</Result> 
</ArrayOfResult> 

は、このようなとしてそれをフォーマットすることが可能です:

<Result> 
<WholeName> 
     <LastName></LastName> 
     <FirstName></FirstName> 
     <MiddleName></MiddleName> 
</WholeName> 
<Addresses> 
     <Address1></Address1> 
     <Address2></Address2> 
</Address> 
</Result> 
+0

いいえ、なぜなら、XML要素名は数字で始めることができないからです。 [尋ねる]を読んで、正確に何を起こそうとしているのかを具体的に説明してください。 – CodeCaster

+0

投稿を編集しました。数字に集中しないでください。単なるサンプルです。 WCFで は、私はこの結果を返しました: XMLElementを使用して..手動でマッピングする(要素と属性を設定する) WebAPIではこれもできますか? – Jeric

+0

@stuartdあなたは確かに "XSLT"を意味していますか? (そして、シャーリーとは呼ばないでください) – CodeCaster

答えて

2

あなたは今、結果のクラスがあります。

public class Result 
{ 
    public string Id { get; set; } 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
    public string MiddleName { get; set; } 
    public string Address1 { get; set; } 
    public string Address2 { get; set; } 
} 

そしてAPIメソッドからその配列を返すと、表示されるようにシリアル化されます。

var results = new Result[] 
{ 
    new Result { Id = "123", ... }, 
}; 

このレスポンスの構造を変更します。

public class Result 
{ 
    public WholeName WholeName { get; set; } 
    public List<Address> WholeName { get; set; } 
} 

public class WholeName 
{ 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
    public string MiddleName { get; set; } 
} 

public class Address 
{ 
    public string Address { get; set; } 
} 

そして、その型のインスタンスにあなたの結果をマップ:そのためには、あなたが望む正確な構造にデータを保持する新しい型を定義する必要が

var newResult = new Result 
{ 
    WholeName = new WholeName 
    { 
     FirstName = oldResult.FirstName, 
     ... 
    }, 
    Addresses = new List<Address> 
    { 
     new Address 
     { 
      Address = oldResult.Address1, 
      ... 
     } 
    } 
} 
+0

これは多分それで役立つだろうと思い、ここ } を行きます。それは私が心に持っているものです。それらのクラスを作成する代わりに、私が使うことができる、または忘れてしまったアノテーションがあるかどうか分かりません。 アノテーションの用語が間違っている場合は正しく表示されます。 – Jeric

+0

アノテーションを使用してプロパティのシリアライズを変更することはできますが、(ネストしたような)新しい構造全体を出力に導入することはできません。 – CodeCaster

+0

私は参照してください。ありがとう。今、心が澄んでいます。 – Jeric

関連する問題