很好的代码来格式化xml字符串

Tob*_*len 15 xml delphi text-formatting pretty-print

任何人都有一个现成的函数,它将采用XML字符串并返回正确缩进的字符串?

例如

<XML><TAG1>A</TAG1><TAG2><Tag3></Tag3></TAG2></XML>
Run Code Online (Sandbox Code Playgroud)

并在插入换行符和制表符或空格后返回格式良好的String?

Bru*_*Gee 16

RTL在XMLDoc.pas中具有FormatXMLData,用于接受和返回字符串.


gab*_*abr 10

使用OmniXML:

program TestIndentXML;

{$APPTYPE CONSOLE}

uses
  SysUtils,
  OmniXML,
  OmniXMLUtils;

function IndentXML(const xml: string): string;
var
  xmlDoc: IXMLDocument;
begin
  Result := '';
  xmlDoc := CreateXMLDoc;
  if not XMLLoadFromAnsiString(xmlDoc, xml) then
    Exit;
  Result := XMLSaveToAnsiString(xmlDoc, ofIndent);
end;

begin
  Writeln(IndentXML('<XML><TAG1>A</TAG1><TAG2><Tag3></Tag3></TAG2></XML>'));
  Readln;
end.
Run Code Online (Sandbox Code Playgroud)

上面的代码片段被释放到公共域.