在C#中解析xml

本文关键字:xml | 更新日期: 2023-09-27 17:58:42

我很难将这个xml文件作为朋友列表来阅读。我需要结果作为朋友列表(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;
} 

    <?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>

在C#中解析xml

如果您想使用XML序列化,您有两个选项:使用系统中的类。Xml。序列化命名空间,并创建一个类结构,该类结构将容纳您需要的数据;或者使用诸如xsd.exe之类的工具为您生成类。使用前者,你会得到一个简洁的数据模型,使用后者,你可能会得到比你真正需要的更多的类(自动生成的价格)。

如果您想使用xsd.exe,您应该首先将XML保存在一个文件中(比如"file.XML"),然后运行它来创建文件的模式:

xsd.exe file.xml

这将创建一个名为file.xsd的文件,其中包含该XML的模式。然后再次运行xsd.exe生成类,XmlSerializer可以使用这些类来使用XML:

xsd.exe /c file.xsd

您可以尝试这样的方法。

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();
    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;
  }
}

试试这个。。。

相关文章:
  • 没有找到相关文章