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>

解决方案 »

  1.   

    http://topic.csdn.net/u/20091231/00/4555a7a0-1ee6-4704-9d93-042ceb703633.html
      

  2.   

    帮出来的效果要什么样的。你的XML是有结构形式的。
      

  3.   

                DataTable dt = new DataTable();
                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;
      

  4.   

     string  url=Server.MapPath("~/XMLFile.xml");
            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>
      

  5.   

    建议你用LINQ。这个很好做出来的。
      

  6.   

       楼主提供的Xml文件中的内容是两个表格,所以我手动把这两张表合并为一张表,然后再付给DataGrid,下面是几个相关的函数,楼主可以借鉴一下.至于绑定DataGird我就不写出来了。 
            /// <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;
            }