2012-10-22 118 views
1

如何正确地反序列化<site-standard-profile-request>子元素,使其不显示为空?以xml反序列化子元素

反序列化过程是完美的;我只需要让子元素<site-standard-profile-request>也可以序列化。

//<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> 
    //- <person> 
    // <first-name>Storefront</first-name> 
    // <last-name>Doors</last-name> 
    // <headline>CEO at StorefrontDoors.NET</headline> 
    //- <site-standard-profile-request> 
    // <url>http://www.linkedin.com/profile?viewProfile=&key=147482099&authToken=-Igm&authType=name&trk=api*a216630*s224617*</url> 
    // </site-standard-profile-request> 
    // </person> 
    [XmlRoot("person")] 
    [Serializable()] 
    public class LinkedIn 
    { 
     [XmlElement("first-name")] 
     public string FirstName { get; set; } 
     [XmlElement("last-name")] 
     public string LastName { get; set; } 
     [XmlElement("headline")] 
     public string Headline { get; set; } 
     public string URL { get; set; } 
    } 


string profile = oauth.APIWebRequest("GET", "https://api.linkedin.com/v1/people/~", null); 
     // 

     LinkedIn lkIn = null; 

     BufferedStream stream = new BufferedStream(new MemoryStream()); 
     stream.Write(Encoding.ASCII.GetBytes(profile), 0, profile.Length); 
     stream.Seek(0, SeekOrigin.Begin); 
     StreamReader sr = new StreamReader(stream); 
     XmlSerializer serializer = new XmlSerializer(typeof(LinkedIn)); 

     lkIn = (LinkedIn)serializer.Deserialize(sr); 
     stream.Close(); 

回答

1

您将需要另一个可序列化的类,只需将url作为属性。例如,

[XmlRoot("site-standard-profile-request")] 
[Serializable()] 
public class StandardProfile 
{ 
    public string url { get;set;} 
} 

然后你现有的类应该使用它,像

[XmlRoot("person")] 
[Serializable()] 
public class LinkedIn 
{ 
    [XmlElement("first-name")] 
    public string FirstName { get; set; } 
    [XmlElement("last-name")] 
    public string LastName { get; set; } 
    [XmlElement("headline")] 
    public string Headline { get; set; } 

    public StandardProfile Profile { get;set; } 
} 

我没有测试此代码,但应该是八九不离十。

希望有所帮助。

+0

不知道为什么我没有尝试这之前,我发布了这个问题。 谢谢你的工作很好。 –