7

我有一个 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);

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

4

2 回答 2

11

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

像这样使用它:

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

免责声明:我没有尝试过。

于 2012-04-18T09:48:41.020 回答
0

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

类似的工作:

var
    xmlDoc: IXMLDOMDocument2;

xmlDoc := CreateOleObject('Microsoft.XMLDOM') as IXMLDOMDocument2;
xmlDoc.validateOnParse := True;
xmlDoc.preserveWhiteSpace := True;
于 2016-11-01T18:40:38.003 回答