Как читать XML из веб-API ASP.NET?

У меня есть веб-API, который бы читал XML и передавал его соответствующей модели для обработки.

Как я могу получить этот XML-код? Какой тип данных следует использовать?

Использую ли я StreamReader, StreamContent или XmlDocument или другое?

Ответ 1

Веб-API ASP.NET использует согласование контента для автоматического десериализации входящего 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>

Если по какой-либо причине вы хотите вручную прочитать и проанализировать входящий XML файл, вы можете сделать это следующим образом:

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

Ответ 2

Любой входящий контент может быть прочитан как поток байтов, а затем обработан по мере необходимости.

public async Task<HttpResponseMessage> Get() {

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

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

   // Process XML document

   return new HttpResponseMessage();
}