Einzelnen Beitrag anzeigen

Rolf Frei

Registriert seit: 19. Jun 2006
629 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: HTML-Encoding in XML

  Alt 1. Mär 2021, 13:43
Bei XML Dateien ist der Default UTF-8. Dateien ohne Encodingangaben werden als UTF-8 gelesen. Da musst du dich auch dran halten und die Daten als UTF-8 ins XML schreiben. Gleichzeitig auch noch den Text in den Nodes XML encoden.

Delphi-Quellcode:
function XMLEncode(const AStr: String): String;
const
  Convert = ['&','<','>','"',''''];
var
  Sp, Rp: PChar;
begin
  SetLength(Result, Length(AStr) * 10);
  Sp := PChar(AStr);
  Rp := PChar(Result);
  while Sp^ <> #0 do
  begin
    case Sp^ of
      '&': begin
             FormatBuf(Rp{$IFNDEF UNICODE}^{$ENDIF}, 5, '&amp;', 5, []);
             Inc(Rp,4);
           end;
      '<',
      '>': begin
             if Sp^ = '<then
               FormatBuf(Rp{$IFNDEF UNICODE}^{$ENDIF}, 4, '<', 4, [])
             else
               FormatBuf(Rp{$IFNDEF UNICODE}^{$ENDIF}, 4, '>', 4, []);
             Inc(Rp,3);
           end;
      '"': begin
             FormatBuf(Rp{$IFNDEF UNICODE}^{$ENDIF}, 6, '&quot;', 6, []);
             Inc(Rp,5);
           end;
      '''': begin
             FormatBuf(Rp{$IFNDEF UNICODE}^{$ENDIF}, 6, '&apos;', 6, []);
             Inc(Rp,5);
           end;
    else
      Rp^ := Sp^
    end;
    Inc(Rp);
    Inc(Sp);
  end;
  SetLength(Result, Rp - PChar(Result));
end;

Geändert von Rolf Frei ( 1. Mär 2021 um 15:59 Uhr)
  Mit Zitat antworten Zitat