xmlns =''>不是预期的. - XML文档中存在错误(2,2)

use*_*603 23 .net c# xml xml-serialization

我试图反序列化这个简单的Web服务的响应

我使用以下代码:

WebRequest request = WebRequest.Create("http://inb374.jelastic.tsukaeru.net:8080/VodafoneDB/webresources/vodafone/04111111");    
WebResponse ws = request.GetResponse();
XmlSerializer s = new XmlSerializer(typeof(string));
string reponse = (string)s.Deserialize(ws.GetResponseStream());
Run Code Online (Sandbox Code Playgroud)

L.B*_*L.B 54

将XmlSerializer声明为

XmlSerializer s = new XmlSerializer(typeof(string),new XmlRootAttribute("response"));
Run Code Online (Sandbox Code Playgroud)

足够.

  • 仅供参考,LB 是正确的,但如果有父节点,则略有不同。在 xml 中,我反序列化父节点是 <PlatformResponse> ,它抛出异常“<Platform xmlns="> was not returned". new XmlRootAttribute("response")); 没有清除错误,new XmlRootAttribute("PlatformResponse")); 做了。给 LB 投票 (2认同)

ta.*_*.is 10

您希望反序列化XML并将其视为片段.

有可用的一个非常简单的解决办法在这里.我为你的场景修改了它:

var webRequest = WebRequest.Create("http://inb374.jelastic.tsukaeru.net:8080/VodafoneDB/webresources/vodafone/04111111");

using (var webResponse = webRequest.GetResponse())
using (var responseStream = webResponse.GetResponseStream())
{
    var rootAttribute = new XmlRootAttribute();
    rootAttribute.ElementName = "response";
    rootAttribute.IsNullable = true;

    var xmlSerializer = new XmlSerializer(typeof (string), rootAttribute);
    var response = (string) xmlSerializer.Deserialize(responseStream);
}
Run Code Online (Sandbox Code Playgroud)