【发布时间】:2012-04-18 07:38:44
【问题描述】:
我有一个 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);
如何使用空格缩进而不是制表符来保存?
【问题讨论】:
-
您可能想阅读 Zarko Gajic 的这篇文章,delphi-format-xml-node-indent。提供的解决方案使用
xmlDoc.FormatXMLData以一种很好的方式格式化文件。 -
我知道现在问题出在哪里,
FormatXMLData没有机会知道您使用的是什么NodeIndentStr,因为您将字符串传递给该函数,因此它使用默认的 TAB 字符。 -
@TLama 那么解决方案是什么?
-
你试过用
preserveWhiteSpace(IXMLDOMDocument)吗? -
有一个选项
poPreserveWhiteSpace。像这样使用:Document.ParseOptions := Document.ParseOptions+[poValidateOnParse]+[poPreserveWhiteSpace];。这样做有用吗?抱歉,Kobik,刚刚看到你的评论。
标签: xml delphi delphi-2010 indentation auto-indent