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 Edit : 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ファイル自体を見ないと答えられません。すべての属性と名前がクエリと一致していることを確認してください。ListBox にバインドする前に、TicketList にデータがあることを確認してください。大規模なデバッグが必要です。問題はあなたのLinqクエリだと思います。LINQ クエリを簡素化する必要があります。

更新: 要素名が一致しません。LINQ にも外側の「チケット」要素が欠けていると思います。「チケット」内の各要素に移動する必要があります。"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 に答える