gpt4 book ai didi

c# - XML 字符串到 DataGridView

转载 作者:太空宇宙 更新时间:2023-11-03 11:48:50 25 4
gpt4 key购买 nike

我目前正在使用网络服务来提取有关远程支持系统中用户的报告。

拉取我的报告并收到结果后,通过方法返回以下字符串:

<report>
<header>
<field id="0">Source</field>
<field id="1">Session ID</field>
<field id="2">Date</field>
<field id="3">Name</field>
<field id="24">Technician Name</field>
<field id="25">Technician ID</field>
</header>
<data>
<row>
<field id="0">Email</field>
<field id="1">55037806</field>
<field id="2">4/13/2010 2:28:06 AM</field>
<field id="3">Bill Gates</field>
<field id="24">John</field>
<field id="25">1821852</field>
</row>
<row>
<field id="0">Telephone</field>
<field id="1">55034548</field>
<field id="2">4/13/2010 12:59:44 AM</field>
<field id="3">Steve Jobs</field>
<field id="24">John</field>
<field id="25">1821852</field>
</row>
</data>
</report>

收到这个字符串后,我需要获取它并在数据 GridView 中显示实际数据。我试过将它放入 XMLDocument 然后读取它,但它似乎一直在失败。只是对另一双眼睛感兴趣 :) 应用程序是在 VS2010 中用 C# 编写的。

最佳答案

您可以使用 Linq to XML 使用 XML 文件中的列名称构建一个 DataTable,然后将该表设置为 DataGridView< 的 DataSource/ :

        string xml = theWebService.TheMethod();
XDocument doc = XDocument.Parse(xml);
var queryHeaders =
from field in doc.Root.Element("header").Elements("field")
select new
{
Id = field.Attribute("id").Value,
Name = field.Value
};

var headers = queryHeaders.ToDictionary(f => f.Id, f => f.Name);

DataTable table = new DataTable();
foreach (var kvp in headers)
{
table.Columns.Add(kvp.Value);
}

Func<XElement, DataRow> rowGenerator =
element =>
{
var row = table.NewRow();
foreach (var field in element.Elements("field"))
{
string fieldId = field.Attribute("id").Value;
string columnName = headers[fieldId];
string value = field.Value;
row[columnName] = value;
}
return row;
};

var rows =
from rowElement in doc.Root.Element("data").Elements("row")
select rowGenerator(rowElement);

foreach (var row in rows)
{
table.Rows.Add(row);
}

dataGridView.AutoGenerateColumns = true;
dataGridView.DataSource = table;

请注意,上面的代码仅在所有字段都具有不同名称的情况下才有效。如果不是这种情况,您可能希望使用字段 ID 作为 DataColumn 名称,并使用实际字段名称更改 DGV 的 header

关于c# - XML 字符串到 DataGridView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2633548/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com