C# 反序列化restful uri

C# 反序列化restful uri,c#,rest,serialization,service,C#,Rest,Serialization,Service,我正在尝试反序列化位于的RESTURI并不断得到错误(XML文档(1,1)中有一个错误)。插入浏览器,您可以看到结果 我有一节课 public class Country { public string CountryName {get;set;} public string CountryCode {get;set;} } 我的控制台应用程序中的方法如下: static void DeserializeTheXML() { XmlRootAt

我正在尝试反序列化位于的RESTURI并不断得到错误(XML文档(1,1)中有一个错误)。插入浏览器,您可以看到结果

我有一节课

public class Country
{
    public string CountryName {get;set;}
    public string CountryCode {get;set;}
} 
我的控制台应用程序中的方法如下:

   static void DeserializeTheXML()
    {

        XmlRootAttribute xRoot = new XmlRootAttribute();
        xRoot.ElementName = "countryName";
        xRoot.IsNullable = true;


        XmlSerializer ser = new XmlSerializer(typeof(Country), xRoot);
        XmlReader xRdr = XmlReader.Create(new StringReader("http://ws.geonames.org/countryInfo?lang=it&country=DE"));
        Country tvd = new Country();
        tvd = (Country)ser.Deserialize(xRdr);



        Console.WriteLine("Country Name = " + tvd.CountryName);
        Console.ReadKey();

    }

关于如何反序列化这个rest服务有什么想法吗?感谢..

要使序列化成功工作,您需要使用适当的序列化属性装饰对象,或者使用XmlAttributeOverrides构造函数。另外,不要忘记XML是区分大小写的,您的对象必须反映您正在反序列化的XML结构:

public class GeoNames
{
    [XmlElement("country")]
    public Country[] Countries { get; set; }
}

public class Country
{
    [XmlElement("countryName")]
    public string CountryName { get; set; }

    [XmlElement("countryCode")]
    public string CountryCode { get; set; }
} 

class Program
{
    static void Main()
    {
        var url = "http://ws.geonames.org/countryInfo?lang=it&country=DE";
        var serializer = new XmlSerializer(typeof(GeoNames), new XmlRootAttribute("geonames"));
        using (var client = new WebClient())
        using (var stream = client.OpenRead(url))
        {
            var geoNames = (GeoNames)serializer.Deserialize(stream);
            foreach (var country in geoNames.Countries)
            {
                Console.WriteLine(
                    "code: {0}, name: {1}", 
                    country.CountryCode, 
                    country.CountryName
                );
            }
        }
    }
}

除了Darin的回答:您的字符串读取器不从web服务获取XML,而只是将URL作为字符串包含,这将导致XML反序列化错误。您知道如何从上面的示例中删除名称空间吗?在另一个rest uri上尝试了此操作,它包含一个命名空间。谢谢..-“>-0 BBQ Smith bbqsmith.com请不要使用“评论”部分发布代码片段。它完全不可读。请更新您的原始问题或启动一个新的线程,据我所知,这与您最初在此处提出的结构非常不同。