Xml导入到datagridview c#

时间:2017-09-18 21:45:54

标签: c# xml winforms

你能帮我导入这个XML吗?

我的困难在于他没有元素。

例如:

<?xml version="1.0" encoding="Windows-1252"?>
<TBL>
  <CLI001>
    <NrCli>1000</NrCli>
    <Nome>Garagem Mira-Sintra, Lda.</Nome>
    <CPost>2710-011 SINTRA</CPost>
    <Comercial>7</Comercial>
    <VndNome>A. Tomás &amp; Lúcio- Terraplanagens e Cofragens, Lda</VndNome>
  </CLI001>
  <CLI002>
    <NrCli>1001</NrCli>
    <Nome>Auto Mecânica Torreense, Lda</Nome>
    <CPost>2560-231 TORRES VEDRAS</CPost>
    <Comercial>8</Comercial>
    <VndNome>Ricardo Rui Ribeiro - Sociedade de advogados</VndNome>
  </CLI002>
  <CLI003>
    <NrCli>1002</NrCli>
    <Nome>Auto Peças de Miranda, Lda</Nome>
    <CPost>5210-300 SÃO MARTINHO DE ANGUEIRA</CPost>
    <Comercial>10</Comercial>
    <VndNome>Jacinto Marques de Almeida Saraiva</VndNome>
  </CLI003>
<TBL>

只导入第一条记录:

Print Result

try
{
  DataSet dataSet = new DataSet();
  dataSet.ReadXml(@"C:\Users\Rui\Desktop\myfilename.xml");
  dataGridView1.DataSource = dataSet.Tables[0];
}
catch (Exception ex)
{
  MessageBox.Show(ex.ToString());
}

我无法找到解决这个问题的方法:s

2 个答案:

答案 0 :(得分:2)

然后结束标记<input [(ngModel)]="tRating" type="number" min="1" max="10"> 应该关闭标记<TBL>。下次您可以使用this URL来验证您的xml。

答案 1 :(得分:0)

首先,你的示例xml中有一个拼写错误,它应该有一个结束标记。我假设您的实际XML具有结束标记,因为当您尝试将XML加载到DataSet中时,您的代码会失败。

您在数据网格视图中只看到一行的原因是因为 只有数据集中的一行。表[0]。每个CLI标记(CLI001,CLI002,CLI003)都作为单独的表加载到数据集中。查看datagrid视图中加载的数据的结构,它符合CLI001的子项。如果要在单个DataGridView中显示所有这些内容,则需要将它们合并到一个数据表中。

DataSet dataSet = new DataSet();
dataSet.ReadXml(@"C:\Users\Rui\Desktop\myfilename.xml");

//merge all the tables into a single one
var dtMerged = dataSet.Tables[0].Copy();

for (int i = 1; i < dataSet.Tables.Count; i++)
{
    dtMerged.Merge(dataSet.Tables[i]);
}

//set the datasource using the merged datatable
dataGridView1.DataSource = dtMerged;