У меня есть веб-API, который бы читал XML и передавал его соответствующей модели для обработки.
Как я могу получить этот XML-код? Какой тип данных следует использовать?
Использую ли я StreamReader
, StreamContent
или XmlDocument
или другое?
У меня есть веб-API, который бы читал XML и передавал его соответствующей модели для обработки.
Как я могу получить этот XML-код? Какой тип данных следует использовать?
Использую ли я StreamReader
, StreamContent
или XmlDocument
или другое?
Веб-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);
Любой входящий контент может быть прочитан как поток байтов, а затем обработан по мере необходимости.
public async Task<HttpResponseMessage> Get() {
var stream = await Request.Content.ReadAsStreamAsync();
var xmlDocument = new XmlDocument();
xmlDocument.Load(stream);
// Process XML document
return new HttpResponseMessage();
}