如何从ASP.NET Web API读取XML?

Not*_*tMe 11 c# asp.net-web-api

我有一个Web API,它将读取XML并将其传递给适当的模型进行处理.

我怎样才能收到即将发布的XML?我应该使用哪种数据类型?

什么时候使用StreamReader,StreamContent或者XmlDocument还是其他?

Des*_*tar 13

ASP.NET Web API使用内容协商将传入的http请求自动反序列化为模型类.开箱即用,这将适用于任何XML,JSON或wwww-form-urlencoded消息.

public class ComputerController : ApiController
{
    public void Post(ComputerInfo computer)
    {
        // use computer argument
    }
}
Run Code Online (Sandbox Code Playgroud)

创建一个映射到XML属性的模型类.

public class ComputerInfo
{
    public string Processor { get; set; }
    public string HardDrive { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

这个传入的XML将被反序列化,以便在Post方法中对计算机参数进行水合.

<ComputerInfo>
   <Processor>AMD</Processor>
   <HardDrive>Toshiba</HardDrive>
</ComputerInfo>
Run Code Online (Sandbox Code Playgroud)

如果由于某种原因你想手动读取和解析传入的xml,你可以这样做

string incomingText = this.Request.Content.ReadAsStringAsync().Result;
XElement incomingXml = XElement.Parse(incomingText);
Run Code Online (Sandbox Code Playgroud)


Dar*_*ler 5

任何传入的内容都可以作为字节流读取,然后根据需要进行处理。

public async Task<HttpResponseMessage> Get() {

   var stream = await Request.Content.ReadAsStreamAsync();

   var xmlDocument = new XmlDocument();
   xmlDocument.Load(stream);

   // Process XML document

   return new HttpResponseMessage();
}
Run Code Online (Sandbox Code Playgroud)

  • “字节流”——出于某种原因,这让我想起了奥里诺科人鱼出没的部分。不过,更严重的是,我在 http://stackoverflow.com/questions/21994108/how-can-i-read-an-xml-file-in-a-web-api-app 上发布了一个相关问题 (2认同)