XML节点说明:
一级点:DepName
二级节点:SendData 和 LeaderIdea
三级节点:MeltWeight,FcatUnitHao,JieDian如何得到DataSet,同时保持节点间的父子关系?
===========================================================
//生成XML字符串 
private string CreateStrXML()
{
string strXML = "";
strXML += "<?xml version=\"1.0\" encoding=\"utf-8\"?>";
strXML += "<DeptName>";
strXML += "第一车间";
strXML += "<SendData>";
strXML += "200604";
strXML += "<MeltWeight>";
strXML +="28";
strXML +="</MeltWeight>";
strXML += "<FcatUnitHao>";
strXML +="30";
strXML +="</FcatUnitHao>";
strXML += "<JieDian>";
strXML +="500";
strXML +="</JieDian>";
strXML +="</SendData>";
strXML +="<LeaderIdea>";
strXML +="同意";
strXML +="</LeaderIdea>";
strXML += "</DeptName>";
return strXML;
}//返回数据集
private DataSet GetDataSet()
{
     try
     {
string text = CreateStrXML();
XmlTextReader reader = new XmlTextReader(new StringReader(text));
reader.WhitespaceHandling = WhitespaceHandling.None;//保持空格
DataSet ds = new DataSet("myDataSet");
ds.ReadXml( reader );//加载XML到DS中
reader.Close();
ds.Dispose();
return ds;
     }
     catch(Exception err)
     {
throw new Exception("GetDataSet方法异常:"+err.Message);
      }
 }

解决方案 »

  1.   

    忘记说了,现在的情况是,DataGrid绑定后显示:
    DeptName_id  LeaderIdea
    0            同意如果我要去掉LeaderIdea这个节点;
    得到的是:
    MeltWeight   FcatUnitHao   JieDian
    28            30           500而我希望得到的是:DataGrid中:
    MeltWeight   FcatUnitHao   JieDian
    28            30           500
    其他信息显示在别的Label中就行,现在我只找不到这些值
      

  2.   

    或者大家认为我的xml串有问题,也告诉我,我还不大熟悉。
      

  3.   

    DeptName_id 是怎么来的呢。
    这个ds中实际是有两个table,一个是DeptName,另一个是SendData.
      

  4.   

    你这么修改一下你的数据看看先.
    DataSet加载的是xml的数据,从结果的输出你可以看出来,这个XML加载后,一共有三个表,分别是DeptName,SendData和LeaderIdea...而这三个表的结构,刚好也符合你的XML文档数据结构..如果在DataGrid绑定的时候不想要DeptName_id ,就不要让DG自动生成列.采用手工加入列.
    我测试的代码dg.DataSource = ds.Tables["SendData"];直接绑定2级表SendData,然后手工加入需要的列就好了 ..============================================================== private string GetstrXML() 
    {
    string strXML = "";
    strXML += "<?xml version=\"1.0\" encoding=\"utf-8\"?>";
    //把这个值用属性表示了..增加XML文件可读性.
    strXML += "<DeptName value=\"第一车间\">";
    strXML += "<SendData>";
    strXML += "200604";
    strXML += "<MeltWeight>";
    strXML +="28";
    strXML +="</MeltWeight>";
    strXML += "<FcatUnitHao>";
    strXML +="30";
    strXML +="</FcatUnitHao>";
    strXML += "<JieDian>";
    strXML +="500";
    strXML +="</JieDian>";
    strXML +="</SendData>";
    strXML +="<LeaderIdea>";
    strXML +="同意";
    strXML +="</LeaderIdea>";

    strXML += "<SendData>";
    strXML += "32131";
    strXML += "<MeltWeight>";
    strXML +="修改咯";
    strXML +="</MeltWeight>";
    strXML += "<FcatUnitHao>";
    strXML +="333333修改咯30";
    strXML +="</FcatUnitHao>";
    strXML += "<JieDian>";
    strXML +="500";
    strXML +="</JieDian>";
    strXML +="</SendData>";
    strXML +="<LeaderIdea>";
    strXML +="同意";
    strXML +="</LeaderIdea>";
    strXML += "</DeptName>";
    return strXML;
    }
      

  5.   

    回楼上,这个DeptName_id我不知道是怎么生成的。
    也不知道是做什么的。
    另外,如果我要在这个XML串中增加一个回车怎么写?
    如:
    strXML +="<LeaderIdea>";
    strXML +="同意";//想这里回车
    strXML +="意见描述";
    strXML +="</LeaderIdea>";
      

  6.   

    你可以直接用<br>输出就好了..直接输出字符串就好了..HTML自动解析.strXML +="<LeaderIdea>";
    strXML +="同意<br>";//想这里回车
    strXML +="意见描述";
    strXML +="</LeaderIdea>";
      

  7.   

    另外,DeptName_id这个是你的根节点名称..是DataSet读入后自动生成的..你可以观察下其他的节点..也是如此..都会自动加入一个根节点的名称..如果需要保留XML文件的父子关系,你可以使用ReadSchema加载XML结构..具体的操作需要你查一下MSDN..
      

  8.   

    谢谢!
    <br>是不可以的,绑定时有问题。
    因为XMl会成为:
    (假设idea节点)
    <idea>同意<br>意见描述
    </idea>
    这样不符合XML语法了吧
    我这样试过了。
    我想xml中的回车是否有特定的格式?
      

  9.   

    &lt;br&gt;这么写是XML中的换行..XML中的<和>都不能出现..
      

  10.   

    <idea>同意&lt;br&gt;意见描述
    </idea>这样实际得到的还是:
    <idea>同意<br>意见描述
    </idea>
      

  11.   

    我意思是,idea这个节点的值放在TextBox后应该是:
    同意
    意见描述上面的方法得到的是:
    同意<br>意见描述