添加?登录XML.DocumentElement

时间:2017-01-09 15:36:40

标签: xml delphi delphi-7 omnixml

我正在使用Delphi 7和OmniXML并尝试创建文档,我需要将DocumentElement设为:

  

<?xml version =" 1.0"编码=" UTF-8">

但我无法理解如何添加最后?个符号。

我的代码:

var    
  xml: IXMLDocument;   
begin    
  xml := ConstructXMLDocument('?xml');    
  SetNodeAttr(xml.DocumentElement, 'version', '1.0');   
  SetNodeAttr(xml.DocumentElement, 'encoding', 'UTF-8');    
  XMLSaveToFile(xml, 'C:\Test1.xml', ofIndent);  
end;

1 个答案:

答案 0 :(得分:6)

<?xml version="1.0" encoding="UTF-8"?>

这不是文档元素。它甚至不是一个元素,而是一个 Processing Instruction ,它恰好是XML声明,有时也称为XML prolog。

要指定XML声明的属性,请改为使用:

xmlDoc.CreateProcessingInstruction('xml', 'version="1.0" encoding="UTF-8"');

例如:

{$APPTYPE CONSOLE}

uses
  OmniXML;

var
  XMLDoc: IXMLDocument;
  ProcessingInstruction: IXMLProcessingInstruction;
  DocumentElement: IXMLElement;
begin
  XMLDoc := CreateXMLDoc;
  ProcessingInstruction := XMLDoc.CreateProcessingInstruction('xml',
    'version="1.0" encoding="UTF-8"');
  DocumentElement := XMLDoc.CreateElement('foo');

  XMLDoc.DocumentElement := DocumentElement;
  XMLDoc.InsertBefore(ProcessingInstruction, DocumentElement);

  XMLDoc.Save('foo.xml', ofIndent);
end.