الشيء الجميل من التعليمات البرمجية لتهيئة سلسلة أكس

StackOverflow https://stackoverflow.com/questions/234056

سؤال

وأي شخص حصل على وظيفة الجاهزة التي سوف تتخذ سلسلة XML وإرجاع سلسلة بادئة بشكل صحيح؟

وعلى سبيل المثال

<XML><TAG1>A</TAG1><TAG2><Tag3></Tag3></TAG2></XML>

ووسيعود سلسلة منسقة بشكل جيد في المقابل بعد إدخال بفواصل وعلامات التبويب أو مسافات؟

هل كانت مفيدة؟

المحلول

ووRTL ديه FormatXMLData في XMLDoc.pas أن يقبل ويعود السلاسل.

نصائح أخرى

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.

ويتم تحرير جزء التعليمات البرمجية أعلاه للمجال العام.

وعن طريق XSLT ...

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:output method="xml" indent="yes" />
    <xsl:template match="/">
        <xsl:copy-of select="."/>
    </xsl:template>
</xsl:stylesheet>

ولقد استخدمت مرتب مع <لأ href = "http://elsdoerfer.name/=libtidy "يختلط =" نوفولو noreferrer "> libtidy من مايكل Elsdörfer. تعطيك أكوام من الخيارات ويمكنك تكوين لهم خارجيا إلى التطبيق. ينطبق أيضا على HTML.

وهذا هو بعض التعليمات البرمجية عصيب جدا التي استعملتها. افعل به كما يحلو لك.

function TForm1.DoTidy(const Source: string): string;
var
  Tidy              : TLibTidy;
begin
  if not TidyGlobal.LoadTidyLibrary('libtidy.dll') then
  begin
    //    Application.MessageBox('TidyLib is not available.', 'Error', 16);
    //    exit;
    raise Exception.Create('Cannot load TidyLib.dll');
  end;
  Tidy := TLibTidy.Create(Self);
  try
    Tidy.LoadConfigFile(ExtractFilePath(Application.ExeName) +
      'tidyconfig.txt');
    //    Tidy.Configuration.IndentContent := tsYes;
    //    Tidy.Configuration.IndentSpaces := 5;
    //    Tidy.Configuration.UpperCaseTags := False;
    //    Tidy.Configuration.NumEntities := True;
    //    Tidy.Configuration.AccessibilityCheckLevel := 2;
    //    Tidy.Configuration.InlineTags := 'foo,bar';
    //    Tidy.Configuration.XmlDecl := True;
    //    Tidy.Configuration.XmlTags := True;
    //    Tidy.Configuration.CharEncoding := TidyUTF8;
    //    Tidy.Configuration.WrapLen := 0;
    //    Tidy.SaveConfigFile('tidyconfig.txt');
    Tidy.ParseString(Source);
    Result := Tidy.RunDiagnosticsAndRepair;
  finally
    Tidy.Free;
  end;
end;

ووXML كائن المستند DOM بناء في دلفي لديها خيار تنسيق جميلة. كنت مجرد تحميل XML الخاصة بك فيه واحفظه نتراجع، وإذا كان لديك تعيين هذا الخيار ثم يجعل كل شيء جميل.

وسوف ننظر إليه وتحديث هذه الإجابة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top