我有一个名为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" />
它是一个短信,我有超过1000个短信,所以我想按名称或地址(无关紧要)将它们加载到列表框中,当我点击其中一个时,我想显示所选短信的正文。这是我的代码:
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行上。你能帮忙吗?
P.S。对不起我的英文。
答案 0 :(得分: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;
}
注意前导//
。