XMLを読み込んで処理するための適切なモデルに渡すWeb APIがあります。ASP.NET Web APIからXMLを読み取る方法は?
入ってくるXMLをどのように受け取ることができますか?私はどのデータ型を使うべきですか?
StreamReader
,StreamContent
またはXmlDocument
などを使用しますか?
XMLを読み込んで処理するための適切なモデルに渡すWeb APIがあります。ASP.NET Web APIからXMLを読み取る方法は?
入ってくるXMLをどのように受け取ることができますか?私はどのデータ型を使うべきですか?
StreamReader
,StreamContent
またはXmlDocument
などを使用しますか?
ASP.NET Web APIは、コンテンツネゴシエーションを使用して、受信HTTP要求をモデルクラスに自動的に逆シリアル化します。これは任意のXML、JSON、またはwwww-form-urlencodedメッセージで動作します。
public class ComputerController : ApiController
{
public void Post(ComputerInfo computer)
{
// use computer argument
}
}
XMLのプロパティにマップするモデルクラスを作成します。
public class ComputerInfo
{
public string Processor { get; set; }
public string HardDrive { get; set; }
}
この入ってくるXMLは、POSTメソッドでは、コンピュータのパラメータを水和するために非直列化されるだろう。
<ComputerInfo>
<Processor>AMD</Processor>
<HardDrive>Toshiba</HardDrive>
</ComputerInfo>
どれ着信コンテンツはバイトストリームとして読み取ることができ、この
string incomingText = this.Request.Content.ReadAsStringAsync().Result;
XElement incomingXml = XElement.Parse(incomingText);
のように手動で受信したXMLを読み込んで解析したい何らかの理由で、あなたはそうすることができればと必要に応じて処理されます。
public async Task<HttpResponseMessage> Get() {
var stream = await Request.Content.ReadAsStreamAsync();
var xmlDocument = new XmlDocument();
xmlDocument.Load(stream);
// Process XML document
return new HttpResponseMessage();
}
"バイトのストリーム" - 何らかの理由で、これはOrinocoのピラニアに感染した部分を考えるようになります。 もっと真剣に、http://stackoverflow.com/questions/21994108/how-can-i-read-an-xml-file-in-a-web-api-appに関連する質問を掲載しました –
ReadAsStreamAsyncとLoadを使用する方が、ReadAsStringとParseよりも優れたオプションです。 –
@DarrelMillerそれはなぜですか? – Despertar
ReadAsStringは、XMLドキュメントで定義されているものとは異なる文字列エンコーディングを選択する可能性があるためです。 –