如何在delphi中给生成的xml文件加上 以下内容
  <?xml version="1.0" encoding="GBK" ?> 
- <!--  DOCTYPE RZ00100 SYSTEM "hello" 
  -->

解决方案 »

  1.   

    用 TStringList 读出,然后 .Insert 方法插入到文件头,最后 SaveToFile
      

  2.   

    procedure CreateEmptyXML(AFilename:string);
    var XMLFile:TStringList;
    begin
      XMLFile:=TStringList.Create;
      XMLFile.Clear;
      XMLFile.Add('<?xml version="1.0" encoding="GBK" ?> ');
      XMLFile.Add('<!--  DOCTYPE RZ00100 SYSTEM "hello" -->');
      XMLFile.SaveToFile(AFileName);
      XMLFile.Free;
    end;/ by LY http://lysoft.7u7.net http://liuyang.7i24.com http://lysoft.91i.net
      

  3.   

    我想在生成xml文件的同时也生成文件头
    <?xml version="1.0" encoding="GBK" ?> 
    - <!--  DOCTYPE RZ00100 SYSTEM "hello" 
      -->??我是用IXMLDomDocument来生成 xml文件的
    doc  := CreateOleObject('Microsoft.XMLDOM') as IXMLDomDocument;另外想问 
      在生成  xml文件时。我想得到下面的结果 
      <Row id="1">
      我用以下语句  child2:= doc.createElement('Row' +' '+ 'id=' +  '"1"'); 但是提示出错。xml要替换 空格、等于号,和双引号。应该怎么样可以得到<Row id="1">
      

  4.   

    怎么不用VCL中封装好的XMLDocument?它既可以使用你上面的XMLDOM接口,也可以使用VCL封装好的IXMLNODE这样的接口。关于得到<Row id="1">
    使用XML DOM的方法:
      child2:=doc.createElement('Row');
      AttrNode:=doc.createAttribute('id');
      AttrNode.nodeValue:='1';
      child2.attributes.setNamedItem(AttrNode);如果是使用IXMLNODE ,
      vNode:=vRoot.AddChild('Row');
      vNode.Attributes['id']:=1;
      

  5.   


    这个问题已解决,谢谢,halfdream(哈欠) 我将会给分。能帮我在生成xml文件的同时也生成文件头
    <?xml version="1.0" encoding="GBK" ?> 
    - <!--  DOCTYPE RZ00100 SYSTEM "hello" 
      -->??
    我用的是XMLDocument
      

  6.   

    给你写一个稍完整的示例。
    procedure TForm1.Button1Click(Sender: TObject);
    var
      vRoot:IXMLNode;
      vNode:IXMLNode;
      vCmnt:IDOMNode;
      tmpstr:string;
    begin
      tmpstr:='DOCTYPE RZ00100 SYSTEM "hello" ';
      with XMLDocument1 do
      begin
        Active:=true;
        vCmnt:=DOMDocument.createComment(tmpstr);
        DOMDocument.appendChild(vCmnt);    vRoot:=AddChild('root');
        vNode:=vRoot.AddChild('action');
        vNode.Attributes['say']:='hello';
        Encoding:='gb2312';    ShowMessage(XML.Text);
      end;end;
      

  7.   

    用这个我试过,但是生成不了文件头
    你用xmlDomDocument生成了文件头?xml文件我生成了。
    但是
    <?xml version="1.0" encoding="GBK" ?> 
    - <!--  DOCTYPE RZ00100 SYSTEM "hello" 
      -->??
    生成不了!!!!!!!!!!!
      

  8.   

    我用的是TXMLDocument,你试试就知道的。用XMLDOMDocument的完整方法暂时没有空写。
      

  9.   

    这是我用上面方法输出的结果。<?xml version="1.0" encoding="GBK"?>
    <!--DOCTYPE RZ00100 SYSTEM "hello" -->
    <root><action say="hello"/></root>
      

  10.   

    谢谢
    我用 vCmnt:=DOMDocument.createComment(tmpstr);
        DOMDocument.appendChild(vCmnt);
    在IXMLDomDocument也可以实现<!--DOCTYPE RZ00100 SYSTEM "hello" -->那生成<?xml version="1.0" encoding="GBK"?> 要怎样写呢?
    在IXMLDomDocument中
      

  11.   

    这是TXMLDocument里面的相应实现ENCODING设置部分...begin
      if GetDOMDocument.QueryInterface(IDOMXMLProlog, PrologInfo) = S_OK then
      begin
    ......
            PrologInfo.Encoding := Value;
    .....
      end;
    end你一看应该明白的.
      

  12.   

    我刚从vfp转过来,
    不明白怎么定义PrologInfo能把PrologInfo完整写出来吗?
      

  13.   

    我是这样定义的var PrologInfo :IDOMXMLProlog但是找不到IDOMXMLProlog因为我现在已经用IXMLDomDocument写了代码,所以不可能再用TXMLDocument能用 IXMLDomDocument写出文件头吗?
      

  14.   

    刚试了试,确实比我预料的要难。一些文档说,创建一个ProcessingInstruction节点,就是<?xml ..... ?>这种节点,
    在DELPHI6(未加SP2)中是这样实现的,
    但在引入的3.0MS XML却不那么如意。
    指定version,standalone等都好办,encoding的指定后在输出的XML却看不到。
    一时想不清原因何在,也许同不同版本DOM有关。网上很多解决方法是生成XML后,在XML搜索然后插入encoding=XXX字符。。
      

  15.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
       IXMLDoc: TXMLDocument;
    begin
       IXMLDoc:=TXMLDocument.Create(self);
       IXMLDoc.Active:=true;
       IXMLDoc.Encoding := 'GB2312';
       IXMLDoc.Version:='1.0';
       IXMLDoc.AddChild('FLASHMSG');
       IXMLDoc.SaveToFile('d:\test.xml');
    end;end.
      

  16.   

    MINJIANQ(钱敏健)谢谢你的参与。
    这种方法是可以的,但不是现在的问题。
    现在问题是用引入的MSXML类型库处理。