Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 分析XML文件并用值填充对象_C#_Asp.net_Xml Serialization_Xml Parsing - Fatal编程技术网

C# 分析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&

在响应中发送带有所需参数的请求后,我得到以下XML:

<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();
        }
    }