XML结构如下
<Headlist>
<HeadStruct>
<EBELN>38</EBELN>
<LIFNR>A48</LIFNR>
<FRGZU>X</FRGZU>
<DDSXZ>P</DDSXZ>
<Detaillist>
<DetailStruct>
<EBELP>00010</EBELP>
<LOEKZ />
<MATNR>LJDLQT19J00060</MATNR>
<MENGE>10.000</MENGE>
<MEINS>PC</MEINS>
<WERKS>80</WERKS>
<LGORT>61</LGORT>
<ATWRT>qqqq</ATWRT>
</DetailStruct>
<DetailStruct>
<EBELP>00020</EBELP>
<LOEKZ />
<MATNR>LJD</MATNR>
<MENGE>10.000</MENGE>
<MEINS>PC</MEINS>
<WERKS>8</WERKS>
<LGORT>81</LGORT>
<ATWRT>qqqq</ATWRT>
</DetailStruct>
</Detaillist>
</HeadStruct>
</Headlist>
<Headlist>
<HeadStruct>
<EBELN>38</EBELN>
<LIFNR>A48</LIFNR>
<FRGZU>X</FRGZU>
<DDSXZ>P</DDSXZ>
<Detaillist>
<DetailStruct>
<EBELP>00010</EBELP>
<LOEKZ />
<MATNR>LJDLQT19J00060</MATNR>
<MENGE>10.000</MENGE>
<MEINS>PC</MEINS>
<WERKS>80</WERKS>
<LGORT>61</LGORT>
<ATWRT>qqqq</ATWRT>
</DetailStruct>
<DetailStruct>
<EBELP>00020</EBELP>
<LOEKZ />
<MATNR>LJD</MATNR>
<MENGE>10.000</MENGE>
<MEINS>PC</MEINS>
<WERKS>8</WERKS>
<LGORT>81</LGORT>
<ATWRT>qqqq</ATWRT>
</DetailStruct>
</Detaillist>
</HeadStruct>
</Headlist>
dt.Columns.Add("EBELP");
dt.Columns.Add("LOEKZ");
dt.Columns.Add("MATNR");
dt.Columns.Add("MENGE");
dt.Columns.Add("MEINS");
dt.Columns.Add("WERKS");
dt.Columns.Add("LGORT");
dt.Columns.Add("ATWRT"); XmlDocument xd = new XmlDocument();
//xd.Load(filepath);
//xd.LoadXml(string);
XmlNodeList xnl = xd.GetElementsByTagName("DetailStruct");
foreach (XmlNode xn in xnl)
{
DataRow dr = dt.NewRow();
for (int i = 0; i < dt.Columns.Count; i++)
{
string cName = dt.Columns[i].ColumnName;
XmlNode xnC = xn.SelectSingleNode(cName);
if (xnC != null) dr[cName] = xnC.InnerText;
}
dt.Rows.Add(dr);
} this.dataGridView1.DataSource = dt;
DataSet ds = new DataSet();
ds.ReadXml(url); this.GridView1.DataSource = ds.Tables[0];
this.GridView1.DataBind();<?xml version="1.0" encoding="utf-8" ?>
<Headlist>
<HeadStruct>
<EBELN>38</EBELN>
<LIFNR>A48</LIFNR>
<FRGZU>X</FRGZU>
<DDSXZ>P</DDSXZ>
<Detaillist>
<DetailStruct>
<EBELP>00010</EBELP>
<LOEKZ />
<MATNR>LJDLQT19J00060</MATNR>
<MENGE>10.000</MENGE>
<MEINS>PC</MEINS>
<WERKS>80</WERKS>
<LGORT>61</LGORT>
<ATWRT>qqqq</ATWRT>
</DetailStruct>
<DetailStruct>
<EBELP>00020</EBELP>
<LOEKZ />
<MATNR>LJD</MATNR>
<MENGE>10.000</MENGE>
<MEINS>PC</MEINS>
<WERKS>8</WERKS>
<LGORT>81</LGORT>
<ATWRT>qqqq</ATWRT>
</DetailStruct>
</Detaillist>
</HeadStruct>
</Headlist>
/// <summary>
/// 读取XML文件到DataSet
/// </summary>
/// <returns></returns>
DataSet GetDataFromXml()
{
string strpath = @"D:\working\oldFiles\WpfBrowserApp10\WpfBrowserApp10\datatset.xml";
DataSet ds = new DataSet();
ds.ReadXml(strpath);
return ds;
} /// <summary>
/// 根据DS生成DataTable(用于存储Ds中三个Table中的数据)
/// </summary>
/// <param name="ds"></param>
/// <returns></returns>
DataTable CreateDataTable(DataSet ds)
{
DataTable dt = new DataTable();
for (int i = 0; i < ds.Tables.Count; i++)
{
foreach (DataColumn dc in ds.Tables[i].Columns)
{
if (dt.Columns.Contains(dc.ColumnName)) continue;
dt.Columns.Add(new DataColumn(dc.ColumnName,dc.DataType));
}
}
return dt;
} /// <summary>
/// 把DS中3个Table的数据合成到一个DataTable中
/// </summary>
/// <param name="ds"></param>
/// <param name="dt"></param>
/// <returns></returns>
DataTable FillDataToDataTable(DataSet ds, DataTable dt)
{
for (int i = 0; i < ds.Tables.Count; i++)
{
for(int _i=0;_i<ds.Tables[i].Rows.Count;_i++)
{
DataRow drTmp = dt.NewRow();
dt.Rows.Add(drTmp);
for (int j = 0; j < ds.Tables[i].Columns.Count;j++ )
{
dt.Rows[_i][ds.Tables[i].Columns[j].ColumnName] = ds.Tables[i].Rows[_i][j];
}
}
}
return dt;
}