我用DataSet的对象 ds.WriteXml(myPath); 生成xml文件后xml文件的内容如下:<?xml version="1.0" standalone="yes"?>
<XXGB>
  <XX>
    <ID>14</ID>
    <NR>32323</NR>
    <NUM>4</NUM>
  </XX>
  <XX>
    <ID>15</ID>
    <NR>SDFSDFSDF</NR>
    <NUM>6</NUM>
  </XX>
</XXGB>
问题是,如何将文件头
<?xml version="1.0" standalone="yes"?>
设置成
<?xml version="1.0" encoding="gb2312"?>
这样的呢???

解决方案 »

  1.   

    Response.Write("<?xml version=\"1.0\" encoding=\"gb2312\"?>");
            Response.Write(ds.GetXml());
      

  2.   

    可以设置编码的 默认应该是utf-8
      

  3.   

                XmlDocument doc = new XmlDocument();
                doc.Load(Server.MapPath("~/XMLFile1.xml"));
                XmlDeclaration declaration = doc.FirstChild as XmlDeclaration;
                declaration.Standalone = null;
                declaration.Encoding = "gb2312";
                doc.Save( Server.MapPath( "~/XMLFile1.xml"));如果你的xml文档本来就在内存中,就不用load了。
      

  4.   

    可是我希望在写入xml的时候就生成像
    <?xml version="1.0" encoding="gb2312"?> 
    这样
      

  5.   

    本是不存在的,是需要我写进去,让别人去用去读取的
    不能再
    ds.writeXMl();
    之前有一个办法生成
    <?xml version="1.0" encoding="gb2312"?>  
    这种格式吗??
      

  6.   

    那不是在读的时候吗??
    我希望在写入的时候生成的 xml 文件头的格式就像这样
    <?xml version="1.0" encoding="gb2312"?> 
      

  7.   

    问题是,dataset write的时候是用utf-8来保存的,你非要保存为gb2312有什么意义呢?
      

  8.   

    更好的方案:
    XmlWriterSettings setting = new XmlWriterSettings();
                setting.Encoding = System.Text.Encoding.GetEncoding("gb2312");
                using (XmlWriter writer = XmlWriter.Create(Server.MapPath("~/XMLFile2.xml"), setting))
                {
                    ds.WriteXml(writer);
                }
      

  9.   

    System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
            doc.LoadXml("<?xml version=\"1.0\" encoding=\"gb2312\"?>  "+ds.GetXml());        doc.Save(@"c:\a.xml");
      

  10.   

    11楼可以用。我测试过的。
    如果想要格式漂亮一点,就设置下setting.
    XmlWriterSettings setting = new XmlWriterSettings();
    /**************************************************************
    * 这里可以设置setting,除了可以设置编码之外,还可以设置文档
     * 是否换行,是否缩进等属性,让文档更美丽。
    **************************************************************/
    setting.Indent = true;
    /**************************************************************/setting.Encoding = System.Text.Encoding.GetEncoding("gb2312");//设置编码格式。using (XmlWriter writer = XmlWriter.Create(Server.MapPath("~/XMLFile2.xml"), setting))
    {
       ds.WriteXml(writer);
    }这是生成的代码。
    <?xml version="1.0" encoding="gb2312"?>
    <NewDataSet>
        <Table1>
            <aa>0_aa</aa>
            <bb>0_bb</bb>
        </Table1>
        <Table1>
            <aa>1_aa</aa>
            <bb>1_bb</bb>
        </Table1>
        <Table1>
            <aa>2_aa</aa>
            <bb>2_bb</bb>
        </Table1>
        <Table1>
            <aa>3_aa</aa>
            <bb>3_bb</bb>
        </Table1>
        <Table1>
            <aa>4_aa</aa>
            <bb>4_bb</bb>
        </Table1>
        <Table1>
            <aa>5_aa</aa>
            <bb>5_bb</bb>
        </Table1>
        <Table1>
            <aa>6_aa</aa>
            <bb>6_bb</bb>
        </Table1>
        <Table1>
            <aa>7_aa</aa>
            <bb>7_bb</bb>
        </Table1>
        <Table1>
            <aa>8_aa</aa>
            <bb>8_bb</bb>
        </Table1>
        <Table1>
            <aa>9_aa</aa>
            <bb>9_bb</bb>
        </Table1>
    </NewDataSet>
      

  11.   

    编写xml用XMLWriter是最好的,也是最典型的使用啦。