我有一个XML文件,需要在我的datagridview中填充两列。我之前从未使用过XML,但我已经把它带到了我可以改变数据的地方。通过文本框和按钮分享我想要的任何东西。现在我需要它到我可以拥有" Child1"被放入一个名为" Name"和#34;数据"在第一个叫做"值"旁边的另一列中。另外,我在运行时创建了datagridview,我最终希望这个工具能够根据已读取的xml文件动态更改。
顶级元素
<Child1>data</Child1>
<Child2>data</Child2>
<Child3>data</Child3>
<Child4>data</Child4>
/ TopElement
我尝试过使用system.XML和system.XML.Linq,我似乎无法用我需要的东西填充datagridview列。我的dataSet为我的datagridview添加了两列,只有一行,这两列都不是我想要的。
try
{
xmlReader xmlFile;
xmlFile = XmlReader.Create(@"C:location\dataFile.xml", new XmlReaderSettings());
DataSet ds = new DataSet();
ds.ReadXml(@"C:location\datafile.xml");
dgv_XML.DataSource = ds.Tables[0];
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
我尝试使用foreach循环获取所有行,但它只会导致我的程序崩溃。
foreach (XNode name_node in TopElement.Nodes())
{
dgv_XML.Rows.Insert(0,1);
}
答案 0 :(得分:0)
1.使用“名称”和“值”列创建数据表
DataTable dt = new DataTable();
dt.Columns.Add("Name");
dt.Columns.Add("Value");
2.将您的XML文件载入XDocumnet
XDocument doc = XDocument.Load(@"XMLFilePath");
3.在XDocument上使用LINQ创建所需的名称 - 值对作为匿名对象
var rows = doc.Root.Descendants().Select(element => new
{
Name = element.Name,
Value = element.Value,
});
4。将匿名可枚举对象列表转换为DataTable
rows.ToList().ForEach(i => dt.Rows.Add(i.Name, i.Value));