XmlTextWriter xtw = new XmlTextWriter("yourfilename", System.Text.Encoding.GetEncoding("GB2312"));

解决方案 »

  1.   

    to:acewang(平平安安过一年) 
    可以了,谢谢!
    还有一个问题:我要使用ReadXml方法来读刚刚创建的Xml文件,然后把得来的DataSet邦定在一个DataGrid上,可是老是提示错误
    怎么使用?
    这个问题解决后,我再开贴给你分
      

  2.   

    同意 acewang(平平安安过一年)
    XmlTextWriter xml = new XmlTextWriter(GetConfigFile(), GetEncoding("GB2312"));把错误代码贴出来。
      

  3.   

    我这个语句有错误吗?
    DataSet ds = new DataSet();
    ds.ReadXml(xmlfile);
    return ds;
    我的XML文件既有元素又有属性,它是怎么知道我的格式的?
      

  4.   

    提示错误:“0”字符(十六进制值 0x30)不能以名称作为开头
    错误发生在
    ds.ReadXml(xmlfile);
    这个语句中。
      

  5.   

    看这段代码生成的xml文件(xml文件附后):
    DataSet OriginalDataSet = new DataSet("myDataSet");
        OriginalDataSet.Namespace= "NetFrameWork";
       DataTable myTable = new DataTable("myTable");
       DataColumn c1 = new DataColumn("id", Type.GetType("System.Int32"));
       c1.AutoIncrement= true;
       DataColumn c2 = new DataColumn("item");
       myTable.Columns.Add(c1);
       myTable.Columns.Add(c2);
       OriginalDataSet.Tables.Add(myTable);
       DataRow newRow;
       for(int i = 0; i < 10; i++){
          newRow = myTable.NewRow();
          newRow["item"]= "item " + i;
          myTable.Rows.Add(newRow);
       }
       OriginalDataSet.AcceptChanges();
       string xmlFilename = "myXmlDocument.xml";
       OriginalDataSet.WriteXml(xmlFilename);
       OriginalDataSet.Dispose();
      

  6.   

    是不是你的编码错误,ds.ReadXml(xmlfile);无法读入,你试试其它编码如UTF8
      

  7.   

    请楼主注意这个格式,并与上面的代码对比,会发现DataSet到xml的格式.myXmlDocument.xml:
    <?xml version="1.0" standalone="yes"?>
    <myDataSet xmlns="NetFrameWork">
      <myTable>
        <id>0</id>
        <item>item 0</item>
      </myTable>
      <myTable>
        <id>1</id>
        <item>item 1</item>
      </myTable>
      <myTable>
        <id>2</id>
        <item>item 2</item>
      </myTable>
      <myTable>
        <id>3</id>
        <item>item 3</item>
      </myTable>
      <myTable>
        <id>4</id>
        <item>item 4</item>
      </myTable>
      <myTable>
        <id>5</id>
        <item>item 5</item>
      </myTable>
      <myTable>
        <id>6</id>
        <item>item 6</item>
      </myTable>
      <myTable>
        <id>7</id>
        <item>item 7</item>
      </myTable>
      <myTable>
        <id>8</id>
        <item>item 8</item>
      </myTable>
      <myTable>
        <id>9</id>
        <item>item 9</item>
      </myTable>
    </myDataSet>
      

  8.   

    我的生成xml文件的代码如下:我主要用属性的。
    string XmlName = Server.MapPath(@"XmlFiles\" + DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() + ".xml");
    XmlTextWriter writer = new XmlTextWriter(XmlName,System.Text.Encoding.GetEncoding("GB2312"));
    writer.Formatting = Formatting.Indented;
    writer.Indentation = 4; writer.WriteStartDocument(true);
    writer.WriteStartElement("salarys");
    string element = "";
    for(int i=0;i<dt.Rows.Count;i++)
    {
    //元素名称用人员编号,第一个必须为人员编号
    element = dt.Rows[i][0].ToString();
    writer.WriteStartElement(element);
    for(int j=1;j<dt.Columns.Count;j++)
    {
    writer.WriteAttributeString(dt.Columns[j].ColumnName.ToString(),dt.Rows[i][j].ToString());
    }
    writer.WriteEndElement();
    }
    writer.Close();然后我就用ReadXml来读,就是上面的代码。出错。
      

  9.   

    ReadXml和WriteXml是不是非要成对出现?
      

  10.   

    循环那段应该这样写:
    for(int i=0;i<dt.Rows.Count;i++)
    {
    //元素名称用人员编号,第一个必须为人员编号
    writer.WriteStartElement(dt.TableName);
    for(int j=0;j<dt.Columns.Count;j++)
    {
    writer.WriteStartElement(dt.Columns[j].ColumnName.ToString());
    writer.WriteString(dt.Rows[i][j].ToString());
    writer.WriteEndElement();
    }
    writer.WriteEndElement();
    }
      

  11.   

    TO:公主我用WriteXml方法来生成Xml文件,可是我原来的DataTable中的某些列因为值空的,所以根本就没有显示出来相关元素,也就是我的列名。怎么办?
      

  12.   

    在写xml的时候,每条记录的每列值都是作为一个元素,而不是属性。而且每条记录的父节点用表的名字。xml的根结点是DataSet的名字。
      

  13.   

    这个没关系的,因为在ReadXml都会处理这些情况的。如果WriteXml一些特殊的处理在ReadXml却没有的话,那就是微软的bug了。所以我想ReadXml应该会处理的。
      

  14.   

    只要两个DataSet的结构相同,如果WriteXml没有出错,那么ReadXml也应该不会出错。