簡體   English   中英

循環遍歷XML節點

[英]Loop through XML Nodes

我正在以XML格式從網站中提取一些數據,並且在沒有連續節點的情況下它可以正常工作,但我無法確定如何在存在時循環使用它們。 我得到的數據看起來像......

 <whmcsapi> 
  <action>gettickets</action> 
  <numreturned>1</numreturned> 
  <tickets> 
   <ticket>  
    <tid>557168</tid> 
    <name><![CDATA[Array]]></name> 
    <subject><![CDATA[Test Ticket]]></subject> 
    <message><![CDATA[This is a test ticket>
   <ticket>
   <ticket>
    <tid>557168</tid> 
    <name><![CDATA[Array]]></name> 
    <subject><![CDATA[Test Ticket]]></subject> 
    <message><![CDATA[This is a test ticket>
   <ticket>

如何循環讀取每個節點的數據? 我的代碼現在是以下......

    public List<Ticket> Get_Tickets()
    {
        Dictionary<string, string> args = new Dictionary<string, string>();
        args.Add("status", "All Active Tickets");

        string data = Get_Data("gettickets", args);
        XDocument doc = XDocument.Parse(data);

        //var support_tickets = doc.Descendants("ticket").Select(ticket => new
        List<Ticket> support_tickets = (from x in doc.Descendants("ticket") select new Ticket
        {
            ID = x.Element("id").Value,
            TicketID = x.Element("tid").Value,
            DeptID = x.Element("deptid").Value,
            UserID = x.Element("userid").Value,
            Name = x.Element("name").Value,
            Email = x.Element("email").Value,
            Subject = x.Element("subject").Value,
            Message = x.Element("message").Value,
        }).ToList();

        return support_tickets;
    }

票務班......

public class Ticket
{
    public string ID;
    public string TicketID;
    public string DeptID;
    public string UserID;
    public string Name;
    public string Email;
    public string CC;
    public string Subject;
    public string Message;
    public string Status;
    public string Priority;
    public DateTime Date;
    public DateTime LastResponse;
    public IPAddress IP;
}
List<Ticket> supportTickets = 
    (from x in doc.Descendants("ticket")
     select new Ticket
     {
         ID = x.Element("id").Value,
         TicketID = x.Element("tid").Value,
         DeptID = x.Element("deptid").Value,
         UserID = x.Element("userid").Value,
         Name = x.Element("name").Value,
         Email = x.Element("email").Value,
         Subject = x.Element("subject").Value,
         Message = x.Element("message").Value,
     }).ToList();

您可以嘗試此代碼。 如果您嘗試獲取不存在的Element的值,則會拋出異常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM