我要实现的效果是:将XML中的数据用listview呈现成表格就像gridview那样。但是出错了,我把XML文件和部分核心代码贴出来请教高手指点。
XML文件:
<?xml version="1.0" encoding="gb2312" standalone="no"?>
<table>
<users>
<user>
<name>萧江涛</name>
<sex>男</sex>
<phone>12345678912</phone>
<address>中国</address>
<company>成都哈</company>
</user>
<user>
<name>郭强</name>
<sex>男</sex>
<phone>234356543</phone>
<address>巴中</address>
<company>货安</company>
</user>
<user>
<name>郑金龙</name>
<sex>男</sex>
<phone>34564342</phone>
<address>巴中</address>
<company>货安</company>
</user>
</users>
</table>
我用了两种向listview控件中写入XML的方法但是都报错了。下面是这两种方法:
#region 加载xml到listview中显示
XmlDocument doc = new XmlDocument();
doc.Load("..//../xmlFile.xml");
//定位节点
XmlNode nodes = doc.SelectSingleNode("//users");
//获取所有子节点
XmlNodeList nodeList = nodes.ChildNodes;
foreach (XmlNode Node in nodeList)
{
XmlElement nodeValue = (XmlElement)Node;//转换为元素节点
XmlNodeList nodeValueList = nodeValue.ChildNodes;
foreach (XmlNode node in nodeValueList)
{
//li.SubItems.Clear();
li.SubItems[0].Text = Node.ChildNodes.Item(0).InnerText.ToString();
li.SubItems.Add(Node.ChildNodes.Item(1).InnerText.ToString());
li.SubItems.Add(Node.ChildNodes.Item(2).InnerText.ToString());
li.SubItems.Add(Node.ChildNodes.Item(3).InnerText.ToString());
li.SubItems.Add(Node.ChildNodes.Item(4).InnerText.ToString());
lv.Items.Add(li);
}
}
//this.lv.Items.Add(li);
#endregion
#region xml写入DataSet
string xmlPath = "..//../xmlFile.xml";
DataSet xmlDaSet = new DataSet();
xmlDaSet.ReadXml(xmlPath,XmlReadMode.InferSchema);
DataTable xmlTable = xmlDaSet.Tables["user"];
lv.Items.Clear();//将datatable写入listview
foreach (DataRow rows in xmlTable.Rows)
{
li.SubItems[0].Text = rows["name"].ToString();
li.SubItems.Add(rows["sex"].ToString());
li.SubItems.Add(rows["phone"].ToString());
li.SubItems.Add(rows["address"].ToString());
li.SubItems.Add(rows["company"].ToString());
lv.Items.Add(li);
}
#endregion
我在打断点调试时发现不能给listview的第二项写入值,不知道为什么。请高手指点。有分送哦!