@@ -9,6 +9,7 @@ interface
99 ComCtrls, Dialogs, SysUtils, Menus, LCLType,
1010 apphelpers, ActnList, extra_controls,
1111 ExtCtrls, dbconnection, SynEdit, SynEditHighlighter, customize_highlighter,
12+ Laz2_DOM, Laz2_XMLRead, Laz2_XMLWrite,
1213 reformatter, jsonparser, extfiledialog,
1314
1415 SynHighlighterBat,
@@ -455,8 +456,8 @@ procedure TfrmTextEditor.menuAlwaysFormatCodeClick(Sender: TObject);
455456procedure TfrmTextEditor.menuFormatCodeOnceClick (Sender: TObject);
456457var
457458 JsonParser: TJSONParser;
458- // Xml: TXmlVerySimple ;
459- // XmlTmp: IXMLDocument ;
459+ Doc: TXMLDocument ;
460+ InStream, OutStream: TStringStream ;
460461begin
461462 // Reformat code if possible
462463 try
@@ -475,23 +476,26 @@ procedure TfrmTextEditor.menuFormatCodeOnceClick(Sender: TObject);
475476 MemoText.SelEnd := 0 ;
476477 frmReformatter.Free;
477478 end
478- { else if FHighlighter is TSynXMLSyn then begin
479- XmlTmp := TXMLDocument.Create(nil);
480- XmlTmp.LoadFromXML(MemoText.Text);
481- MemoText.BeginUpdate;
482- MemoText.Text := XMLDoc.FormatXMLData(MemoText.Text);
483- MemoText.EndUpdate;
484- Xml := TXmlVerySimple.Create;
485- //Xml.Options := [doNodeAutoIndent, doParseProcessingInstr, doCaseInsensitive, doWriteBOM, doSimplifyTextNodes];
486- Xml.Clear;
487- Xml.Text := MemoText.Lines.Text.Trim;
488- MemoText.BeginUpdate;
489- MemoText.Lines.Text := Xml.Text;
490- MemoText.EndUpdate;
491- Xml.Free;
492- MemoText.SelStart := 0;
493- MemoText.SelLength := 0;
494- end}
479+ else if FHighlighter is TSynXMLSyn then begin
480+ InStream := TStringStream.Create(MemoText.Text);
481+ OutStream := TStringStream.Create(' ' );
482+ try
483+ ReadXMLFile(Doc, InStream); // parse XML
484+ try
485+ WriteXMLFile(Doc, OutStream); // pretty-print XML
486+ finally
487+ Doc.Free;
488+ end ;
489+ MemoText.BeginUpdate;
490+ MemoText.Text := OutStream.DataString; // show formatted XML
491+ MemoText.EndUpdate;
492+ MemoText.SelStart := 0 ;
493+ MemoText.SelEnd := 0 ;
494+ finally
495+ InStream.Free;
496+ OutStream.Free;
497+ end ;
498+ end
495499 else begin
496500 Beep;
497501 end ;
0 commit comments