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

时间:2012-04-18 07:38:44

标签: xml delphi delphi-2010 indentation auto-indent

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

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

以下是代码:

 var
   FileName: String;
   Document: IXMLDocument;
 ...
 Document := XMLDoc.LoadXMLDocument(FileName);
 Document.SaveToFile(FileName);

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

 Document := XMLDoc.LoadXMLDocument(FileName);
 Document.NodeIndentStr := '  ';
 Document.SaveToFile(FileName);

也使用了FormatXMLData - 没有结果:

 Document := XMLDoc.LoadXMLDocument(FileName);
 Document.XML.Text := XMLDoc.FormatXMLData(Document.XML.Text);
 Document.Active := True;
 Document.SaveToFile(FileName);

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

2 个答案:

答案 0 :(得分:11)

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

像这样使用:

Document.ParseOptions := 
  Document.ParseOptions+[poValidateOnParse]+[poPreserveWhiteSpace]; 

免责声明:我没试过。

答案 1 :(得分:0)

我不确定有什么不同但 Document.ParseOptions + [poValidateOnParse,poPreserveWhiteSpace]; 对我来说无法访问。

类似的东西:

var
    xmlDoc: IXMLDOMDocument2;

xmlDoc := CreateOleObject('Microsoft.XMLDOM') as IXMLDOMDocument2;
xmlDoc.validateOnParse := True;
xmlDoc.preserveWhiteSpace := True;