Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.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/angular/26.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从外部API加载到本地对象_C#_Xml - Fatal编程技术网

C# 如何将XML从外部API加载到本地对象

C# 如何将XML从外部API加载到本地对象,c#,xml,C#,Xml,我正在尝试使用URL将XML从外部web服务加载到对象中: 根据我在网上找到的与此相关的内容,我已经创建了对象,并添加了XMLRoot和XMLElement属性: public class Member { [XmlElement("DisplayAs")] string DisplayAs { get; set; } [XmlElement("ListAs")] string ListAs { get; set; }

我正在尝试使用URL将XML从外部web服务加载到对象中:

根据我在网上找到的与此相关的内容,我已经创建了对象,并添加了XMLRoot和XMLElement属性:

public class Member
    {
        [XmlElement("DisplayAs")]
        string DisplayAs { get; set; }
        [XmlElement("ListAs")]
        string ListAs { get; set; }
        [XmlElement("FullTitle")]
        string FullTitle { get; set; }
        [XmlElement("LayingMinisterName")]
        string LayingMinisterName { get; set; }
        [XmlElement("DateOfBirth")]
        string DateOfBirth { get; set; }
        [XmlElement("DateOfDeath")]
        string DateOfDeath { get; set; }
        [XmlElement("Gender")]
        string Gender { get; set; }
        [XmlElement("Party")]
        string Party { get; set; }
        [XmlElement("House")]
        string House { get; set; }
        [XmlElement("MemberFrom")]
        string MemberFrom { get; set; }
        [XmlElement("HouseStartDate")]
        string HouseStartDate { get; set; }
        [XmlElement("HouseEndDate")]
        string HouseEndDate { get; set; }
        [XmlElement("CurrentStatus")]
        CurrentStatus CurrentStatus { get; set; }
    }

    public class CurrentStatus
    {
        [XmlElement("Name")]
        string Name { get; set; }
        [XmlElement("Reason")]
        string Reason { get; set; }
        [XmlElement("StartDate")]
        string StartDate { get; set; }
    }

    [XmlRoot("Members")]
    public class Members
    {
        [XmlElement("Member")]
        List<Member> MemberList { get; set; }
    }

但我似乎无法在网上找到任何可以让我从这里开始用XML数据填充对象的东西。有人能给我建议最好的方法吗,或者直接给我看一篇教程或文章,向我展示如何做到这一点吗?

第一个问题是,您的模型应该具有公共属性,并带有setter和getter,XML反序列化器才能工作。 更改之后,请使用以下代码:

string Url = "http://data.parliament.uk/membersdataplatform/services/mnis/members/query/fymp=ST1";
XmlTextReader reader = new XmlTextReader(Url);

var serializer = new XmlSerializer(typeof(Members));
var members = (Members)serializer.Deserialize(reader);
使用将XML作为字符串获取

WebClient client = new WebClient();
string xml= client.DownloadString(address);
然后将XML字符串反序列化为类的实例

var serializer = new XmlSerializer(typeof(Members));
using (var reader = new StringReader(xml))
{
  var members= (Members)serializer.Deserialize(reader);
}

您必须使用某种类型的
HttpClient
。。。这里是您需要使用XML序列化程序将数据转换为您的对象。这可能是我的愚蠢-但我认为他们已经有了公共getter和setter<代码>字符串显示为{get;set;}-默认情况下这些不是公共的,并且不是getter和setter的缩写。默认情况下,类成员是私有的(即,如果省略访问修饰符),那么将它们更改为pubic应该可以解决这个问题吗?
{get;set;}
是否正常?是的。将它们改为公共应该可以解决这个问题。谢谢@ZoharPeled
var serializer = new XmlSerializer(typeof(Members));
using (var reader = new StringReader(xml))
{
  var members= (Members)serializer.Deserialize(reader);
}