[英]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.