0

问题:我将数据保存到 XML 文件中,但是当我重新打开应用程序时,XML 文件中的数据应该会填充我的列表框,但没有显示任何内容。我已经在这里待了2个小时,找不到问题。

我加载 xml 文件的代码:

public void Load()
{
    XDocument myDoc = XDocument.Load(".../.../parking.xml");

    var ticks = from xElem in myDoc.Descendants("Ticket")
               select new Ticket
               {
                   TimeIn = Convert.ToDateTime(xElem.Element("TimeIn").Value),
                   TicketNum = Convert.ToInt32(xElem.Element("TicketNumber").Value),
               };

    this.Clear();

    AddRange(ticks);
}

我的代码尝试填充列表框:

{
        newList = new TickList();

        newList.Load();

        foreach (var nTick in newList)
        {
            spotList.Items.Add(nTick.ToString());
        }
    }

编辑: http: //pastebin.com/YwPj0Nxc

在此站点上找不到格式化该文件的好方法,但那是 XML 文件。

Smurf 编辑:添加 pastebin XML

<?xml version="1.0" encoding="utf-8"?>
<Tickets>
  <Ticket>
    <TicketNum>1</TicketNum>
    <TimeIn>2012-10-11T17:49:49.896445-05:00</TimeIn>
  </Ticket>
  <Ticket>
    <TicketNum>2</TicketNum>
    <TimeIn>2012-10-11T17:49:50.2714664-05:00</TimeIn>
  </Ticket>
  <Ticket>
    <TicketNum>3</TicketNum>
    <TimeIn>2012-10-11T17:49:50.4304755-05:00</TimeIn>
  </Ticket>
  <Ticket>
    <TicketNum>4</TicketNum>
    <TimeIn>2012-10-11T17:49:50.5944849-05:00</TimeIn>
  </Ticket>
</Tickets>
4

2 回答 2

1

不查看 XML 文件本身就无法回答。确保所有属性和名称与查询匹配。在将 TicketList 绑定到 ListBox 之前,请确保它有数据。您需要大量调试。我认为问题在于您的 Linq 查询。您需要简化 LINQ 查询。

更新:您的元素名称不匹配。我认为 LINQ 也缺少它的外部“Tickets”元素。它应该进入“Tickets”中的每个元素。它说“TicketNum”,但 XML 有“TicketNumber”。

于 2012-10-11T23:19:27.353 回答
0

看起来 XML 与 LINQ 中有拼写错误:

Convert.ToInt32( xElem.Element( "TicketNumber" ).Value )

应该:

Convert.ToInt32( xElem.Element( "TicketNum" ).Value )
于 2012-10-12T00:14:04.057 回答