[英]List.count=0 when get data from XML file to List()
我有一個user.xml
文件,如:
<?xml version="1.0" encoding="utf-8"?>
<myXML>
<RealName>Nguyen Van A</RealName>
<Email>vyclarks@gmail.com</Email>
<Phone>2165421</Phone>
<Address>Ho Chi Minh</Address>
<Link1>dtvt</Link1>
<Link2></Link2>
<Link3></Link3>
</myXML>
我有代碼從xml文件中獲取數據:
public class user
{
public string realname { get; set; }
public string email { get; set; }
public string phone { get; set; }
public string address { get; set; }
public string link1 { get; set; }
public string link2 { get; set; }
public string link3 { get; set; }
}
public void getUser()
{
List<user> us = (
from e in
XDocument.Load("user.xml").Root.Elements("myXML")
select new user
{
realname = (string)e.Element("RealName"),
email = (string)e.Element("Email"),
phone = (string)e.Element("Phone"),
address = (string)e.Element("Address"),
link1 = (string)e.Element("Link1"),
link2 = (string)e.Element("Link2"),
link3 = (string)e.Element("Link3")
}
).ToList();
//get data from list to label
lblrealname.Text = us[0].ToString();
lblmail.Text = us[1].ToString();
lblphone.Text = us[2].ToString();
lbladd.Text = us[3].ToString();
lbllink1.Text = us[4].ToString();
lbllink2.Text = us[5].ToString();
lbllink3.Text = us[6].ToString();
}
但是當我構建時,它有一個錯誤: lblrealname.Text = profiles[0].ToString();
這是內容: Index was out of range. Must be non-negative and less than the size of the collection.
Index was out of range. Must be non-negative and less than the size of the collection.
然后我調試時, us.count = 0
--->我不知道這上面我的代碼有一些錯誤所以在列表中沒有的項目us
。
救命!! 我找不到哪里出錯,是否有更好的方法從該xml文件中獲取數據。
以下行
from e in XDocument.Load("user.xml").Root.Elements("myXML")
結果為0,因為<myXML>
是根,並且它看起來不包含任何嵌套的<myXML>
。
以下應該有效。
from e in XDocument.Load("user.xml").Elements("myXML")
如果你不需要一個可枚舉的,你可以拿根
var element = XDocument.Load("user.xml").Root;
拆分UI和數據訪問邏輯。 使您的方法返回User
對象而不是void。 因此,xml中只有一個根,您不需要編寫返回用戶列表的查詢 - 只需直接訪問根節點即可。 還可以使用PascalCase作為類型名稱,方法和屬性:
public User GetUser()
{
var root = XDocument.Load("user.xml").Root;
return new User {
RealName = (string)root.Element("RealName"),
Email = (string)root.Element("Email"),
Phone = (string)root.Element("Phone"),
Address = (string)root.Element("Address"),
Link1 = (string)root.Element("Link1"),
Link2 = (string)root.Element("Link2"),
Link3 = (string)root.Element("Link3")
};
}
在UI上顯示用戶:
public void DisplayUser(User user)
{
lblrealname.Text = user.RealName;
lblmail.Text = user.Email;
lblphone.Text = user.Phone;
lbladd.Text = user.Address;
lbllink1.Text = user.Link1;
lbllink2.Text = user.Link2;
lbllink3.Text = user.Link3;
}
所有在一起:
var user = GetUser();
DispalylUser(user);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.