C# 如何在.Net 4.0到.Net类中使用HttpClient解析XML响应?
我有一个响应返回xml的web服务 以下是xml响应的屏幕截图:C# 如何在.Net 4.0到.Net类中使用HttpClient解析XML响应?,c#,.net,xml,httpclient,C#,.net,Xml,Httpclient,我有一个响应返回xml的web服务 以下是xml响应的屏幕截图: <?xml version="1.0" encoding="utf-8"?> <Root> <Header> <Message type="String"></Message> </Header> <Output> <Rows> <Row>
<?xml version="1.0" encoding="utf-8"?>
<Root>
<Header>
<Message type="String"></Message>
</Header>
<Output>
<Rows>
<Row>
<Result type="Integer">1021806</Result>
</Row>
</Rows>
</Output>
</Root>
public class ResponseModel
{
public class Root
{
public Header header { get; set; }
public Output output { get; set; }
}
public class Header
{
public string Message { get; set; }
}
public class Output
{
public List<Row> Rows { get; set; }
}
public class Row
{
public int Result { get; set; }
}
}
responseContent
有三种方法:
ReadAsStringAsync()
ReadAsStreamAsync()
ReadAsByteArrayAsync()
这三种方法的区别是什么
对于xml响应,我应该使用哪种方法?如何将xml解析为所需的
响应模型?如何使用“DataContractSerializer”和ReadObject方法?它看起来或多或少是这样的:
var serializer = new DataContractSerializer(typeof(ResponseModel.Root));
var stream = await responseContent.ReadAsStreamAsync();
var response = serializer.ReadObject(stream) as ResponseModel;
您是否在服务和客户机之间共享模型代码?为什么要以这种方式访问web服务?为什么不在VS中将其用作服务引用?你的意思是什么?你能详细说明一下吗。我需要在ReadObject方法中传递根元素吗?是的,序列化程序需要一个ResponseModel。根类型,我将修改我的答案。你可能需要更改模型,在标题和输出中加上大写字母,或者在名称与服务响应不同的字段上使用“DataContractAttribute:[DataMember(Name=“Output”)]自从我使用.net 4.0以来,我做了一件事,因此我删除了wait并调用了.Result in ReadAsStreamAsync();因此它变成了var stream=responseContent.ReadAsStreamAsync().Result;这会影响您的答案吗?
var serializer = new DataContractSerializer(typeof(ResponseModel.Root));
var stream = await responseContent.ReadAsStreamAsync();
var response = serializer.ReadObject(stream) as ResponseModel;