2016-08-19 2 views
0

Hey, ich möchte eine Klasse/Objekt machen, ich kann eine XML-Zeichenfolge deserialisieren, ohne automatisch generierten Code zu verwenden, ich möchte automatisch implementierte Eigenschaften verwenden. Weiß jemand, wie das Objekt/die Klasse, zu der ich deserialize, aussehen sollte?brauche eine Klasse ich kann mein XML ohne automatisch generierten Code deserialisieren. Automatisch implementierte Eigenschaften verwenden

XmlSerializer serializer = new XmlSerializer(typeof(?????)); 
using (TextReader reader = new StringReader(json)) 
{ 
????? person = (?????)serializer.Deserialize(reader); 

} 

Die xml, die ich aus wie folgt aussieht deserialisieren möchten:

<?xml version="1.0" encoding="UTF-8"?> 
<people type="array"> 
<person> 
<author-id type="integer">542343801</author-id> 
<background>Vi &#228;r har jobbat ihop och &#228;r v&#228;nner/Nathalie</background> 
<company-id type="integer">81499881</company-id> 
<created-at type="datetime">2011-08-10T08:39:45Z</created-at> 
<first-name>Perdd</first-name> 
<group-id type="integer" nil="true"></group-id> 
<id type="integer">8153456700134</id> 
<last-name>&quot;Cromwell&quot; (Eriksson)</last-name> 
<owner-id type="integer" nil="true"></owner-id> 
<title>&#228;gare, grafiker</title> 
<updated-at type="datetime">2011-08-16T08:17:43Z</updated-at> 
<visible-to>Everyone</visible-to> 
<company-name>Studio company</company-name> 
<linkedin-url nil="true"> 
</linkedin-url>  
<avatar_url>https://secure.highrisehq.com/avatar_proxy/eJxj4Yhmz2SWLWTMZHk2_TYLABiEBDM|9d29b49d8f165ff33f28b7f7fac2926eb8487319</avatar_url> 
<contact-data> 
<instant-messengers type="array"/> 
<phone-numbers type="array"> 
<phone-number> 
    <id type="integer">70306123</id> 
    <location>Work</location> 
    <number>0703689909</number> 
</phone-number> 
</phone-numbers> 
<email-addresses type="array"> 
<email-address> 
    <address>[email protected]</address> 
    <id type="integer">39720318</id> 
    <location>Work</location> 
</email-address> 
</email-addresses> 
<twitter-accounts type="array"/> 
<addresses type="array"/> 
<web-addresses type="array"> 
<web-address> 
    <id type="integer">70306124</id> 
    <location>Work</location> 
    <url>http://www.studiototal.se</url> 
</web-address> 
</web-addresses> 
</contact-data> 
</person> 



<person> 
<author-id type="integer">848257</author-id> 
<background></background> 
<company-id type="integer">153838696</company-id> 
<created-at type="datetime">2013-02-18T12:49:37Z</created-at> 
<first-name>&quot;Kristofer&quot;</first-name> 
<group-id type="integer" nil="true"></group-id> 
<id type="integer">153838730</id> 
<last-name>&quot;Malmer&quot;</last-name> 
<owner-id type="integer" nil="true"></owner-id> 
<title>Projektledare Online listening</title> 
<updated-at type="datetime">2013-02-18T12:49:37Z</updated-at> 
<visible-to>Everyone</visible-to> 
<company-name>Santa Maria</company-name> 
<linkedin-url nil="true"></linkedin-url> 
<avatar_url>https://secure.highrisehq.com/avatar_proxy/eJxj4Yhmz2SWLWTMZOlK0eYEABUgAvk|d7e22f72a1a3ae2efa83df54e4184d429120cd9f</avatar_url> 
<contact-data> 
<instant-messengers type="array"/> 
<phone-numbers type="array"> 
<phone-number> 
    <id type="integer">129346649</id> 
    <location>Work</location> 
    <number>031-674151</number> 
</phone-number> 
</phone-numbers> 
<email-addresses type="array"/> 
<twitter-accounts type="array"/> 
<addresses type="array"/> 
<web-addresses type="array"/> 
</contact-data> 
</person> 
</people> 

Das ist, was ich jetzt habe. Aber weiß nicht wie das Kontaktdatenelement und alles zwischen Kontaktdaten in mein Objekt konvertiert werden soll?

public class people 
{ 
    public int author_id { get; set; } 
    public string background { get; set; } 
    public int company_id { get; set; } 
    public DateTime created_at { get; set; } 
    public string first_name { get; set; } 
    public int group_id { get; set; } 
    public int id { get; set; } 
    public string last_name { get; set; } 
    public int owner_id { get; set; } 
    public string company_name { get; set; } 

    //contact-data ????????????????????????? 
} 
+0

Kontaktdaten eine eigene Klasse in der Regel ein Geschwister von Menschen Klasse gestellt werden muss. – jdweng

+0

@jdweng kannst du mir zeigen, wie es aussehen soll? –

Antwort

0

Versuchen Sie, diese

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.IO; 
using System.Xml; 
using System.Xml.Serialization; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     const string FILENAME = @"c:\temp\test.xml"; 
     static void Main(string[] args) 
     { 
      People people = new People(); 
      People person = people.GetPeople(FILENAME); 

     } 
    } 
    [XmlRoot("people")] 
    public class People 
    { 
     [XmlElement("person")] 
     public List<Person> person { get; set; } 

     public People GetPeople(string filename) 
     { 
      People person = null; 
      XmlSerializer serializer = new XmlSerializer(typeof(People)); 
      using (XmlTextReader reader = new XmlTextReader(filename)) 
      { 
       person = (People)serializer.Deserialize(reader); 
      } 
      return person; 
     } 
    } 
    [XmlRoot("person")] 
    public class Person 
    { 
     [XmlElement("author_id")] 
     public int author_id { get; set; } 
     [XmlElement("background")] 
     public string background { get; set; } 
     [XmlElement("company_id")] 
     public int company_id { get; set; } 
     [XmlElement("created_at")] 
     public DateTime created_at { get; set; } 
     [XmlElement("first_name")] 
     public string first_name { get; set; } 
     [XmlElement("group_id")] 
     public int group_id { get; set; } 
     [XmlElement("id")] 
     public long id { get; set; } 
     [XmlElement("last_name")] 
     public string last_name { get; set; } 
     [XmlElement("owner_id")] 
     public int owner_id { get; set; } 
     [XmlElement("company_name")] 
     public string company_name { get; set; } 
     [XmlElement("avatar_url")] 
     public string avatar_url { get; set; } 
     [XmlElement("contact-data")] 
     public Contact_Data contact_data { get; set; } 

    } 
    [XmlRoot("contact-data")] 
    public class Contact_Data 
    { 
     [XmlElement("phone-numbers")] 
     public Phone_Numbers phone_numbers { get; set; } 

    } 
    [XmlRoot("phone-numbers")] 
    public class Phone_Numbers 
    { 
     [XmlElement("phone-number")] 
     public List<Phone_Number> phone_number { get; set; } 
    } 
    [XmlRoot("phone-number")] 
    public class Phone_Number 
    { 
     [XmlElement("id")] 
     public int id { get; set; } 
     [XmlElement("location")] 
     public string location { get; set; } 
     [XmlElement("number")] 
     public string number { get; set; } 
    } 

} 
Verwandte Themen