我做了以下2个例子 但不明白为什么会有这么大的不同 请各位达人给我解答一下 谢谢
环境 xp+C#2005
例1:
string xml;
xml = "<Body><one>1</one><two>2</two></Body>";
DataSet dstest = new DataSet();
StringReader StrReader = new StringReader(xml);TextReader tr;
tr = StrReader;
dstest.ReadXml(tr);MessageBox.Show(dstest.DataSetName);
MessageBox.Show(dstest.GetXml());-------------------------------------------------------------------
输出:
NewDataSet<Body>
  <one>1</one>
  <two>2</two>
</Body>=======================================================================
例2:
DataSet dataSet = new DataSet();
DataTable table = dataSet.Tables.Add("Body");
table.Columns.Add("one", typeof(string));
table.Columns.Add("two", typeof(string));DataRow row;
row = table.NewRow();
row["one"] = 1;
row["two"] = 2;
table.Rows.Add(row);MessageBox.Show(dataSet.DataSetName);
MessageBox.Show(dataSet.GetXml());------------------------------------------------------------------
输出:
NewDataSet<NewDataSet>
  <Body>
    <one>1</one>
    <two>2</two>
  <Body>
</NewDataSet>
=========================================================================2个例子的.DataSetName都是NewDataSet 但为何第一个例子.GetXml()没有输出<NewDataSet>这个根元素 而第二个例子有输出了呢?我是想象第二个例子自己建立一个有数据的DataSet然后调用.GetXml()方法输出类是第一个<Body><one>1</one><two>2</two></Body>的这结果 也就是说在.GetXml()不能有<NewDataSet></NewDataSet> 请问要怎样才能行? 谢谢

解决方案 »

  1.   

    dataSet.GetXml()
    以DataSet的名字做为根节点。这个方法就是这样
      

  2.   

    你不要设置DataSet的名字试试看呢。
      

  3.   

    DataSet在WriteXml前都可以进行XML格式转换!....
      

  4.   

    DataSet的内部函数,没办法!
    或许你可以:
    string xml = dataSet.GetXml();
    xml = xml.Replace("<NewDataSet>","");
    xml = xml.Replace("</NewDataSet>","");MessageBox.Show(xml);
      

  5.   

    To Liu_Qiang(人为财死,鸟为食亡)
    谢谢 但基本上没什么用......To csShooter(Sharp Shooter) :
    怎么转换呢 不懂你的意思 能举个简单的例子出来吗?To 3tzjq(永不言弃)
    类似的方法我也想过 但觉得这种方法太“笨”除非实在没有办法了 不然我不想用这种方法
      

  6.   

    如果用dataSet.Tables[0].WrateXml("filename")输出应该没有<DataSetName>节
      

  7.   

    只有考虑用string.Replace方法处理了!
    试过:
    DataSet dataSet = new DataSet();
    DataTable table = dataSet.Tables.Add("Body");
    table.Columns.Add("one", typeof(string));
    table.Columns.Add("two", typeof(string));DataRow row;
    row = table.NewRow();
    row["one"] = 1;
    row["two"] = 2;
    table.Rows.Add(row);System.Text.StringBuilder xml = new System.Text.StringBuilder();
    System.IO.StringWriter sw = new System.IO.StringWriter(xml);table.WriteXml(sw);
    MessageBox.Show(xml.ToString());
    //输出的内容也一样!写DataSet节的目的可能是为了在ReadXml时能识别当前DataSet,因为WriteXml时可以以追加的方式写Xml(多个DataSet).
      

  8.   

    现在我是这样处理的
    DataSet dataSet = new DataSet();DataTable table = dataSet.Tables.Add("Body");
    table.Columns.Add("one", typeof(string));
    table.Columns.Add("two", typeof(string));DataRow row;
    row = table.NewRow();
    row["one"] = 1;
    row["two"] = 2;
    table.Rows.Add(row);XmlDocument doc = new XmlDocument();
    doc.LoadXml(dataSet.GetXml());XmlNode root = doc.FirstChild;
    MessageBox.Show(root.InnerXml);
    ---------------------------------------------
    输出:
    <Body><one>1</one><two>2</two></Body>将就可以用了 但实际上我还是不满意的 我希望直接在DataSet里面就处理好 .GetXml()就得到理想的结果 呵呵 看来不太可能了