我在输入端有一个XML文档,格式非常糟糕(如果有人关心的话,它是Delphi项目文件)-不一致的缩进、空行、节点串集中在一起:

<BorlandProject><Delphi.Personality><Parameters><Parameters Name="HostApplication">C:\Some\Path\Filename.exe</Parameters> <!--etc--> <Excluded_Packages>


</Excluded_Packages>

我想把它改成好看的东西。用win32/com编程最简单的方法是什么?如果是msxml,我该怎么做呢?
我也希望能够指定缩进单位(制表符/多个空格)。
我试过使用delphi的msxml包装器txldocument,它确实删除了空行并用制表符缩进节点,但它没有像这样拆分行:
<BorlandProject><Delphi.Personality><Parameters><Parameters Name="HostApplication">C:\Some\Path\Filename.exe</Parameters> <!--etc--> <Excluded_Packages>

最佳答案

我在delphi项目文件中测试了FormatXMLData函数,工作正常,所有行都缩进正确。
检查这个代码。

uses
 XMLIntf,
 XMLDoc;

Procedure FormatXMLFile(const XmlFile:string);
var
   oXml : IXMLDocument;
 begin
   oXml := TXMLDocument.Create(nil);
   oXml.LoadFromFile(XmlFile);
   oXml.XML.Text:=xmlDoc.FormatXMLData(oXml.XML.Text);
   oXml.Active := true;
   oXml.SaveToFile(XmlFile);
 end;

07-28 08:46