0

sms.xml という名前の xml ドキュメントがあり、データは次のように保存されます。

<sms address="+995555777777" time="Mar 12, 2013 5:08:09 PM" date="1363093689732" type="2" body="blah blah blah? :D" read="1" service_center="" name="name surname" />

それは1つのSMSで、1000以上のSMSがあるので、リストボックスに名前またはアドレス(問題ではありません)でロードしたいのですが、そのうちの1つをクリックすると、選択したSMSの本文が表示されます。これは私のコードです:

XmlDocument xmlDoc = new XmlDocument();

    public void loadXML()
    {
        xmlDoc.Load("sms.xml");

        XmlNodeList smss = xmlDoc.SelectNodes("//sms");

        foreach (XmlNode sms in smss)
        {
            listBox1.Items.Add(sms.Attributes["address"].Value);
        }

    }

    private void button1_Click(object sender, EventArgs e)
    {
        loadXML();
    }

    private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
        XmlNode node = xmlDoc.SelectSingleNode(string.Format("sms[@name='{0}']", listBox1.SelectedItem));

        txtName.Text = node.Attributes["body"].Value;

    }

「オブジェクト参照がオブジェクトのインスタンスに設定されていません」というエラーが返されます。txtName.text 行に。手伝ってくれますか?

ps私の英語でごめんなさい。

4

1 に答える 1

1

構文の問題である可能性があります。次のことを試してください。

private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    XmlNode node = xmlDoc.SelectSingleNode(string.Format("//sms[@name='{0}']", listBox1.SelectedItem));
    txtName.Text = node.Attributes["body"].Value;
}

先頭のに注意してください//

于 2013-03-13T19:26:35.057 に答える