C# 分析XML文件并用值填充对象
在响应中发送带有所需参数的请求后,我得到以下XML:C# 分析XML文件并用值填充对象,c#,asp.net,xml-serialization,xml-parsing,C#,Asp.net,Xml Serialization,Xml Parsing,在响应中发送带有所需参数的请求后,我得到以下XML: <content> <main> <IMGURL>image url</IMGURL> <IMGTEXT>Click Here</IMGTEXT> <TITLE>image title</TITLE> <IMGLINK>image link</IMGLINK&
<content>
<main>
<IMGURL>image url</IMGURL>
<IMGTEXT>Click Here</IMGTEXT>
<TITLE>image title</TITLE>
<IMGLINK>image link</IMGLINK>
</main>
</content>
在调试时,我可以看到在响应中我得到了想要的结果。但是,我在反序列化XML和填充对象时遇到了问题
调用该方法:
public static class ImageDetails
{
private static string _url = ConfigurationManager.AppSettings["GetImageUrl"];
public static content GetImageDetails(string ua)
{
var contenta = new content();
_url += "&ua=" + ua;
try
{
WebRequest req = WebRequest.Create(_url);
var resp = req.GetResponse();
var stream = resp.GetResponseStream();
//var streamreader = new StreamReader(stream);
//var content = streamreader.ReadToEnd();
var xs = new XmlSerializer(typeof(content));
if (stream != null)
{
contenta = (content)xs.Deserialize(stream);
return contenta;
}
}
catch (Exception ex)
{
}
return new content();
}
}
序列化程序区分大小写。您需要将属性
content.Main
重命名为Main
,或者向其添加属性[xmlement(“Main”)]
。请向我们展示您的尝试。此外,XmlSerializer会忽略[Serializable]
。我已经更新了我的问题。另外,我很荣幸你能抽出时间回答我的问题。我是你的粉丝!粉丝?可怕的概念。建议:摆脱“尝试/抓住”障碍。另外,停止更改\u url
。如果调用两次,您将有多个ua
查询参数。尝试了您建议的方法,但无效。如果我注释掉从“var xs=new XmlSerializer(typeof(content));”开始的部分返回contenta并取消注释'//var streamreader=newstreamreader(stream)//var content=streamreader.ReadToEnd();'我可以看到XML。我一定是在反序列化XML的部分出错了。。。在调试过程中,我可以看到Main的属性是空的。建议:用希望看到的数据填充content
的实例,然后序列化它。这将向您显示XmlSerializer希望作为输入看到的内容。对于记录,它区分大小写,并且您的代码应为“Public Main{..}”,否则它肯定不会反序列化您的答案是正确的。在遵循John的建议后,我看到该对象被序列化为与XML完全相同的格式。然后我意识到我没有改变房产的名称。谢谢大家!!!
public static class ImageDetails
{
private static string _url = ConfigurationManager.AppSettings["GetImageUrl"];
public static content GetImageDetails(string ua)
{
var contenta = new content();
_url += "&ua=" + ua;
try
{
WebRequest req = WebRequest.Create(_url);
var resp = req.GetResponse();
var stream = resp.GetResponseStream();
//var streamreader = new StreamReader(stream);
//var content = streamreader.ReadToEnd();
var xs = new XmlSerializer(typeof(content));
if (stream != null)
{
contenta = (content)xs.Deserialize(stream);
return contenta;
}
}
catch (Exception ex)
{
}
return new content();
}
}