I am struggling to read this xml file as list of friends. I need the result as List of friend ( List<Friend>
) where Friend is
public class Friend
{
public string UID {get;set;}
public string Provider {get;set;}
public string PhotoUrl {get;set;}
public string ProfileUrl {get;set;
}
<?xml version="1.0" encoding="utf-8"?>
<socialize.getFriendsInfoResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:com:gigya:api http://socialize-api.gigya.com/schema" xmlns="urn:com:gigya:api">
<statusCode>200</statusCode>
<errorCode>0</errorCode>
<statusReason>OK</statusReason>
<callId>ae61ae53a6094364998206a196874d04</callId>
<friends>
<friend>
<UID>_gid_Maj4wFcR3PA10EXENS/SfNhfszDYN9WRQzBgVyOPz0M=</UID>
<isSiteUser>false</isSiteUser>
<isSiteUID>false</isSiteUID>
<identities>
<identity>
<provider>facebook</provider>
<providerUID>100000378470436</providerUID>
<isLoginIdentity>false</isLoginIdentity>
<nickname>Afzal Raaz</nickname>
<photoURL>https://fbcdn-profile-a.akamaihd.net/hprofile-ak-snc4/70854_100000378470436_113535_s.jpg</photoURL>
<thumbnailURL>https://fbcdn-profile-a.akamaihd.net/hprofile-ak-snc4/70854_100000378470436_113535_q.jpg</thumbnailURL>
<firstName>Afzal</firstName>
<lastName>Raaz</lastName>
<gender>m</gender>
<profileURL>http://www.facebook.com/profile.php?id=100000378470436</profileURL>
</identity>
</identities>
<nickname>Afzal Raaz</nickname>
<photoURL>https://fbcdn-profile-a.akamaihd.net/hprofile-ak-snc4/70854_100000378470436_113535_s.jpg</photoURL>
<thumbnailURL>https://fbcdn-profile-a.akamaihd.net/hprofile-ak-snc4/70854_100000378470436_113535_q.jpg</thumbnailURL>
<firstName>Afzal</firstName>
<lastName>Raaz</lastName>
<gender>m</gender>
<profileURL>http://www.facebook.com/profile.php?id=100000378470436</profileURL>
</friend>
<friend>
<UID>_gid_T6vgh4MDshLvMYzi+Isxa0Ryf0ou2OJf+14pd6iwXlY=</UID>
<isSiteUser>false</isSiteUser>
<isSiteUID>false</isSiteUID>
<identities>
<identity>
<provider>facebook</provider>
<providerUID>100001052246730</providerUID>
<isLoginIdentity>false</isLoginIdentity>
<nickname>Ajaydeep Singh</nickname>
<photoURL>https://fbcdn-profile-a.akamaihd.net/hprofile-ak-snc4/203414_100001052246730_126837_s.jpg</photoURL>
<thumbnailURL>https://fbcdn-profile-a.akamaihd.net/hprofile-ak-snc4/203414_100001052246730_126837_q.jpg</thumbnailURL>
<firstName>Ajaydeep</firstName>
<lastName>Singh</lastName>
<gender>m</gender>
<profileURL>http://www.facebook.com/profile.php?id=100001052246730</profileURL>
</identity>
</identities>
<nickname>Ajaydeep Singh</nickname>
<photoURL>https://fbcdn-profile-a.akamaihd.net/hprofile-ak-snc4/203414_100001052246730_126837_s.jpg</photoURL>
<thumbnailURL>https://fbcdn-profile-a.akamaihd.net/hprofile-ak-snc4/203414_100001052246730_126837_q.jpg</thumbnailURL>
<firstName>Ajaydeep</firstName>
<lastName>Singh</lastName>
<gender>m</gender>
<profileURL>http://www.facebook.com/profile.php?id=100001052246730</profileURL>
</friend>
</friends>
</socialize.getFriendsInfoResponse>
If you want to use XML serialization, you have two options: use the classes in the System.Xml.Serialization namespace, and create a class structure which will hold the data you need;or have a tool such as xsd.exe to generate the classes for you. Using the former you'll get a concise data model, with the latter you may get more classes than you really need (the price for auto-generation).
If you want to use xsd.exe, you'd first save your XML in a file (say "file.xml"), then run it to create the schema for the file:
xsd.exe file.xml
This will create a file called file.xsd which contains the schema for that XML. Then you run xsd.exe again to generate the classes which can be used by the XmlSerializer to consume that XML:
xsd.exe /c file.xsd
public class FriendList
{
public List<Friend> friends;
public FriendList()
{
friends= new List<Friend>();
}
}
public class Friend
{
public string UID {get;set;}
public string Provider {get;set;}
public string PhotoUrl {get;set;}
public string ProfileUrl {get;set;}
}
Public class ParseFriends
{
FriendList p = new FriendList();
public ReadFriends()
{
DirectoryInfo dir = new DirectoryInfo("../path to your xml file");
FileInfo[] files = dir.GetFiles("*.*"); // read all xml file from a folder
XmlDocument doc = new XmlDocument();
foreach (FileInfo f in files)
{
Friend e = new Friend();
doc.Load(f.FullName);
e.UID = doc.GetElementsByTagName("UID")[0].InnerText;
e.Provider = doc.GetElementsByTagName("Provider")[0].InnerText;
e.PhotoUrl = doc.GetElementsByTagName("PhotoUrl")[0].InnerText;
e.ProfileUrl = doc.GetElementsByTagName("ProfileUrl")[0].InnerText;
p.empDetails.Add(e);
}
return p;
}
}
Try this...
You can try something like this.
XDocument doc = XDocument.Parse(@" ... XML ... ");
Func<XElement, string, string> get =
(el, name) => (string)el.Element(XName.Get(name, "urn:com:gigya:api"));
var friends =
from el in doc.Descendants(XName.Get("friend", "urn:com:gigya:api"))
select new Friend
{
UID = get(el, "UID"),
PhotoUrl = get(el, "photoURL"),
ProfileUrl = get(el, "profileURL"),
};
List<Friend> friendList = friends.ToList();
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.