IXMLDocument.SaveToFile()使用制表符来缩进而不是空格

And*_*rew 7 xml delphi indentation auto-indent delphi-2010

我有一个XML文件,最初使用空格缩进格式化(每个嵌套项目有2个空格).

当我使用IXMLDocument加载并保存此文件时,空格缩进将更改为制表符(代码#9).

这是代码:

 var
   FileName: String;
   Document: IXMLDocument;
 ...
 Document := XMLDoc.LoadXMLDocument(FileName);
 Document.SaveToFile(FileName);
Run Code Online (Sandbox Code Playgroud)

我试图使用NodeIndentStr属性 - 没有结果:

 Document := XMLDoc.LoadXMLDocument(FileName);
 Document.NodeIndentStr := '  ';
 Document.SaveToFile(FileName);
Run Code Online (Sandbox Code Playgroud)

也用过FormatXMLData- 没有结果:

 Document := XMLDoc.LoadXMLDocument(FileName);
 Document.XML.Text := XMLDoc.FormatXMLData(Document.XML.Text);
 Document.Active := True;
 Document.SaveToFile(FileName);
Run Code Online (Sandbox Code Playgroud)

如何使用空格缩进而不是制表符保存?

LU *_* RD 11

有一个选项IXMLDocument可以告诉解析器保留空格.

像这样使用它:

Document.ParseOptions := 
  Document.ParseOptions+[poValidateOnParse]+[poPreserveWhiteSpace]; 
Run Code Online (Sandbox Code Playgroud)

免责声明:我没试过.