基本上我创建了允许上传XML文件的表单应用程序,然后在数据网格视图中显示XML文件的内容。
这是我搜索和打开文件的代码。
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "XML | *.xml";
if (ofd.ShowDialog() == DialogResult.OK)
{
XmlDocument xDOC = new XmlDocument();
xDOC.Load(ofd.FileName);
int n = dataGridView1.Rows.Add();
dataGridView1.Rows[n].Cells[0].Value = xDOC.InnerText;
}
这是XML:
<people>
<person> David </person>
<person> Joey </person>
<person> Adam </person>
</people>
我设法让它工作,但由于某种原因,XML文件的所有内容都显示在同一行!帮助?!
答案 0 :(得分:2)
目前,您要在同一单元格中添加文件的整个内容(InnerText)。您必须获取所需节点的内容。
这样的事情应该有效:
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "XML | *.xml";
if (ofd.ShowDialog() == DialogResult.OK)
{
XmlDocument xDOC = new XmlDocument();
xDOC.Load(ofd.FileName);
//We loop through each person node of our document
foreach(XmlNode node in xDOC.SelectNodes("people/person"))
{
//And add its content to a new row
int n = dataGridView1.Rows.Add();
dataGridView1.Rows[n].Cells[0].Value = node.InnerText;
}
}
我们所做的是为SelectNode函数提供我们想要的项目的XPath。可以把它想象成文件路径但是对于Xml。
我建议你看一下System.Linq.Xml命名空间,特别是XDocument类,我认为它提供了一种更简单的方法来处理Xml。