C# 在数据网格视图C上自动添加行#
基本上,我创建的表单应用程序允许上传一个XML文件,然后在数据网格视图中显示XML文件的内容 这是我搜索和打开文件的代码C# 在数据网格视图C上自动添加行#,c#,xml,forms,datagridview,C#,Xml,Forms,Datagridview,基本上,我创建的表单应用程序允许上传一个XML文件,然后在数据网格视图中显示XML文件的内容 这是我搜索和打开文件的代码 OpenFileDialog ofd = new OpenFileDialog(); ofd.Filter = "XML | *.xml"; if (ofd.ShowDialog() == DialogResult.OK) { XmlDocument xDOC = new XmlDocum
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文件的所有内容都显示在同一行上!救命啊 当前,您正在将文件的全部内容(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以外的文件路径
我建议您查看名称空间,尤其是类,我认为它提供了一种处理Xml的更简单方法。您希望返回什么?请发布您的Xml。您只向DataGridView添加了一行,它的工作方式有什么不同?您能提供一些帮助吗,Otiel?仍然不起作用。:/在我的XML文件中,“people”下的节点都命名为“person”,所以这可能就是为什么它们仍然与您提供的代码显示在同一行中的原因。我的错,我已经很久没有使用XML文档了。请参阅我的编辑,它现在应该可以工作了