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

本文关键字:API 读取 XML Web NET ASP | 更新日期: 2023-09-27 18:30:03

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

我如何接收即将到来的XML?我应该使用哪种数据类型?

我使用StreamReaderStreamContentXmlDocument还是其他?

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

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

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>

无论出于何种原因,如果您想手动读取和解析传入的xml,您可以这样做

string incomingText = this.Request.Content.ReadAsStringAsync().Result;
XElement incomingXml = XElement.Parse(incomingText);

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

public async Task<HttpResponseMessage> Get() {
   var stream = await Request.Content.ReadAsStreamAsync();
   var xmlDocument = new XmlDocument();
   xmlDocument.Load(stream);
   // Process XML document
   return new HttpResponseMessage();
}