الشيء الجميل من التعليمات البرمجية لتهيئة سلسلة أكس
-
04-07-2019 - |
سؤال
وأي شخص حصل على وظيفة الجاهزة التي سوف تتخذ سلسلة 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 الخاصة بك فيه واحفظه نتراجع، وإذا كان لديك تعيين هذا الخيار ثم يجعل كل شيء جميل.
وسوف ننظر إليه وتحديث هذه الإجابة.