做一数据交换.!单机版到网络版.!   导出数据的代码如下:
     使用的是MSXML_TLB..!
     try
      doc := CreateOleObject('Microsoft.XMLDOM') as IXMLDomDocument;
      root := doc.createElement('data');
      doc.appendchild(root);
      root1:= doc.createElement('tables');
      root.appendchild(root1);
     ........
   导出成功.格式如下. 
       <data>
          <tables>
              <table name="table1"
    导入数据代码如下:
        使用的是NativeXml  
   try
        DataList:=TStringList.Create;
        NameList:=TStringList.Create;
        doc := TNativeXml.Create;
        doc.LoadFromFile(Edit1.Text);
        ADOTable1.Connection:=conn;
        ANode := doc.Root.NodeByName('tables');
        if not assigned(ANode) then exit;
         AList := TList.Create;
         RList := TList.Create;
         TbList:= TList.Create;
        ANode.NodesByName('table',TbList);
        skingauge_1.MaxValue:=tblist.Count;
      for n:= 0 to TbList.Count - 1 do
  导入成功..
  
  可是问题却出现了.! 
    导入时英文和数据正常..汉字却出现乱码.
现在我想在导出数据是在前面加入
   <?xml version="1.0" encoding="GBK"?>
    我该怎么做.或者你们有更好的办法..先谢了.!

解决方案 »

  1.   


     不是你说的那个问题..!   我手工加上<?xml version="1.0" encoding="GB2312"?>
       
      导入就没有乱码了.
         
                现在我要用程序加入那句话.!
      

  2.   

    用程序就是Processing Instruction
    IXmlDomDocument找找有个createProcsssingInstruction什么的方法
      

  3.   


      楼上的高手.!
       有这个方法..但是不会用..!没用过.!
      createProcsssingInstruction('xml','version="1.0" encoding="GB2312"')
      appendChild()出错
      

  4.   

    在 NativeXml.pas 中有这个变量, 你改一下呢, 或者在你程序中, 或者直接改 NativeXml.pas 中的
    var
      // XML 默认值
      cDefaultEncodingString:          string              = 'gb2312';
      

  5.   

    什么错误? processing instruction必须第一个appendChild
      

  6.   

    导入数据时候,把数据转成utf8编码.
      

  7.   

    XMLDocument.Encoding := 'GB2312';