2014-02-25 80 views
2

我已经做了一个网络API,并成功我JSON格式获取数据,但是当我感到困惑如何获取XML并在编程中使用 学生班级消费XML的WebAPI

namespace StudentInfoClient2 
{ 
    class Student 
    { 
     public int Id 
     { 
      get; 
      set; 
     } 
     public string FName 
     { 
      get; 
      set; 
     } 
     public string LName 
     { 
      get; 
      set; 
     } 
     public string Gender 
     { 
      get; 
      set; 
     } 
     public string Course 
     { 
      get; 
      set; 
     } 
     public string Email 
     { 
      get; 
      set; 
     } 
     public long PhoneNo 
     { 
      get; 
      set; 
     } 


    } 
} 

程序类

namespace StudentInfoClient2 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      Console.WriteLine("The following is the result of Json Data.."); 
      Method1(); 
      Console.WriteLine("\n\n\n"); 
      Console.WriteLine("The following is the result of xml Data..."); 
      Method2(); 

     } 
     static void Method1() 
     { 
      using (HttpClient client = new HttpClient()) 
      { 
       List<Student> studlist = new List<Student>(); 
       client.BaseAddress = new Uri("http://tanmayservice01.sitecloud.cytanium.com/"); 
       client.DefaultRequestHeaders.Accept.Clear(); 
       client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 

       HttpResponseMessage response = client.GetAsync("api/StudentInfo").Result; 
       if (response.IsSuccessStatusCode) 
       { 
        studlist = response.Content.ReadAsAsync<List<Student>>().Result; 
        foreach (Student s in studlist) 
        { 
         Console.WriteLine("{0}\t{1}\t{2}\t{3}", s.Id, s.FName, s.LName, s.Email); 
        } 
       } 
      } 
     } 
     static void Method2() 
     { 
      using (HttpClient client = new HttpClient()) 
      { 
       client.BaseAddress = new Uri("http://tanmayservice01.sitecloud.cytanium.com/"); 
       client.DefaultRequestHeaders.Accept.Clear(); 
       client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/xml")); 

       HttpResponseMessage response = client.GetAsync("api/StudentInfo").Result; 
       if (response.IsSuccessStatusCode) 
       { 
        // string strxml = response.Content.ReadAsStringAsync().Result; 
        XDocument doc = XDocument.Load(response.Content.ReadAsStreamAsync().Result); 
        List<Student> studlist = new List<Student>(); 
        Console.WriteLine(doc.ToString()); 

       //Linq query iam looking for 




       } 
      } 
     } 
    } 
} 

如何编写一个Linq查询以获得与我在json中显示的结果相同的结果?

+0

听起来像主要的斗争是如何将xml结果映射到'Student'类? –

回答

0

为什么不直接使用与JSON相同的XML客户端代码?

例如

 studlist = response.Content.ReadAsAsync<List<Student>>().Result; 
     foreach (Student s in studlist) 
     { 
      Console.WriteLine("{0}\t{1}\t{2}\t{3}", s.Id, s.FName, s.LName, s.Email); 
     } 

在这两种情况下,你都有序列化的对象,无论序列化是用花括号还是尖括号都没有区别。

+0

感谢Darrel的回答..其实我正在寻找linq查询来获取xml数据 –