Added: IsValidXMLChar and GetValidXMLText functions
This commit is contained in:
parent
47e6d988f8
commit
2bf7ac5bf9
39
UnitTests/Units/XMLDataBindingUtilsTest.pas
Normal file
39
UnitTests/Units/XMLDataBindingUtilsTest.pas
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
unit XMLDataBindingUtilsTest;
|
||||||
|
|
||||||
|
interface
|
||||||
|
uses
|
||||||
|
TestFramework;
|
||||||
|
|
||||||
|
|
||||||
|
type
|
||||||
|
TXMLDataBindingUtilsTest = class(TTestCase)
|
||||||
|
published
|
||||||
|
procedure TestIsValidXMLChar;
|
||||||
|
procedure TestGetValidXMLText;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
implementation
|
||||||
|
uses
|
||||||
|
XMLDataBindingUtils;
|
||||||
|
|
||||||
|
|
||||||
|
{ TXMLDataBindingUtilsTest }
|
||||||
|
procedure TXMLDataBindingUtilsTest.TestIsValidXMLChar;
|
||||||
|
begin
|
||||||
|
CheckTrue(IsValidXMLChar('A'));
|
||||||
|
CheckTrue(IsValidXMLChar('ë'));
|
||||||
|
CheckFalse(IsValidXMLChar(#$1A));
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
procedure TXMLDataBindingUtilsTest.TestGetValidXMLText;
|
||||||
|
begin
|
||||||
|
CheckEquals('AB', GetValidXMLText('AB'));
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
initialization
|
||||||
|
RegisterTest(TXMLDataBindingUtilsTest.Suite);
|
||||||
|
|
||||||
|
end.
|
@ -11,7 +11,9 @@ uses
|
|||||||
X2UtHashes in '..\X2UtHashes.pas',
|
X2UtHashes in '..\X2UtHashes.pas',
|
||||||
X2UtHashesVariants in '..\X2UtHashesVariants.pas',
|
X2UtHashesVariants in '..\X2UtHashesVariants.pas',
|
||||||
NamedFormatTest in 'Units\NamedFormatTest.pas',
|
NamedFormatTest in 'Units\NamedFormatTest.pas',
|
||||||
StringsTest in 'Units\StringsTest.pas';
|
StringsTest in 'Units\StringsTest.pas',
|
||||||
|
XMLDataBindingUtilsTest in 'Units\XMLDataBindingUtilsTest.pas',
|
||||||
|
XMLDataBindingUtils in '..\XMLDataBindingUtils.pas';
|
||||||
|
|
||||||
//SettingsTest in 'Units\SettingsTest.pas',
|
//SettingsTest in 'Units\SettingsTest.pas',
|
||||||
//IniParserTest in 'Units\IniParserTest.pas';
|
//IniParserTest in 'Units\IniParserTest.pas';
|
||||||
|
@ -31,6 +31,12 @@
|
|||||||
<CfgParent>Base</CfgParent>
|
<CfgParent>Base</CfgParent>
|
||||||
<Base>true</Base>
|
<Base>true</Base>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Cfg_2)'=='true') or '$(Cfg_2_Win32)'!=''">
|
||||||
|
<Cfg_2_Win32>true</Cfg_2_Win32>
|
||||||
|
<CfgParent>Cfg_2</CfgParent>
|
||||||
|
<Cfg_2>true</Cfg_2>
|
||||||
|
<Base>true</Base>
|
||||||
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Base)'!=''">
|
<PropertyGroup Condition="'$(Base)'!=''">
|
||||||
<DCC_Namespace>System;Xml;Data;Datasnap;Web;Soap;Winapi;$(DCC_Namespace)</DCC_Namespace>
|
<DCC_Namespace>System;Xml;Data;Datasnap;Web;Soap;Winapi;$(DCC_Namespace)</DCC_Namespace>
|
||||||
<VerInfo_Keys>CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=</VerInfo_Keys>
|
<VerInfo_Keys>CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=</VerInfo_Keys>
|
||||||
@ -38,7 +44,7 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Base_Win32)'!=''">
|
<PropertyGroup Condition="'$(Base_Win32)'!=''">
|
||||||
<Debugger_RunParams>ip-to-country.csv countries.csv geo.db</Debugger_RunParams>
|
<Debugger_RunParams>ip-to-country.csv countries.csv geo.db</Debugger_RunParams>
|
||||||
<DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
|
<DCC_Namespace>System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
|
||||||
<VerInfo_Locale>1033</VerInfo_Locale>
|
<VerInfo_Locale>1033</VerInfo_Locale>
|
||||||
<VerInfo_Keys>CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=</VerInfo_Keys>
|
<VerInfo_Keys>CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=</VerInfo_Keys>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
@ -73,6 +79,11 @@
|
|||||||
<DCC_SYMBOL_PLATFORM>False</DCC_SYMBOL_PLATFORM>
|
<DCC_SYMBOL_PLATFORM>False</DCC_SYMBOL_PLATFORM>
|
||||||
<DCC_UNIT_PLATFORM>False</DCC_UNIT_PLATFORM>
|
<DCC_UNIT_PLATFORM>False</DCC_UNIT_PLATFORM>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Cfg_2_Win32)'!=''">
|
||||||
|
<DCC_Namespace>Vcl;$(DCC_Namespace)</DCC_Namespace>
|
||||||
|
<Manifest_File>None</Manifest_File>
|
||||||
|
<VerInfo_Locale>1033</VerInfo_Locale>
|
||||||
|
</PropertyGroup>
|
||||||
<ProjectExtensions>
|
<ProjectExtensions>
|
||||||
<Borland.Personality>Delphi.Personality.12</Borland.Personality>
|
<Borland.Personality>Delphi.Personality.12</Borland.Personality>
|
||||||
<Borland.ProjectType>VCLApplication</Borland.ProjectType>
|
<Borland.ProjectType>VCLApplication</Borland.ProjectType>
|
||||||
@ -136,6 +147,8 @@
|
|||||||
<DCCReference Include="..\X2UtHashesVariants.pas"/>
|
<DCCReference Include="..\X2UtHashesVariants.pas"/>
|
||||||
<DCCReference Include="Units\NamedFormatTest.pas"/>
|
<DCCReference Include="Units\NamedFormatTest.pas"/>
|
||||||
<DCCReference Include="Units\StringsTest.pas"/>
|
<DCCReference Include="Units\StringsTest.pas"/>
|
||||||
|
<DCCReference Include="Units\XMLDataBindingUtilsTest.pas"/>
|
||||||
|
<DCCReference Include="..\XMLDataBindingUtils.pas"/>
|
||||||
<BuildConfiguration Include="Debug">
|
<BuildConfiguration Include="Debug">
|
||||||
<Key>Cfg_2</Key>
|
<Key>Cfg_2</Key>
|
||||||
<CfgParent>Base</CfgParent>
|
<CfgParent>Base</CfgParent>
|
||||||
|
@ -1,9 +1,5 @@
|
|||||||
{
|
{
|
||||||
Helpers functions for the X2Software XML Data Binding
|
Helpers functions for the X2Software XML Data Binding
|
||||||
|
|
||||||
Last changed: $Date: 2010-07-15 12:57:03 +0200 (do, 15 jul 2010) $
|
|
||||||
Revision: $Rev: 54 $
|
|
||||||
URL: $URL: http://svn.kamadev.net/private/XMLDataBinding/trunk/Shared/XMLDataBindingUtils.pas $
|
|
||||||
}
|
}
|
||||||
unit XMLDataBindingUtils;
|
unit XMLDataBindingUtils;
|
||||||
|
|
||||||
@ -83,6 +79,8 @@ const
|
|||||||
procedure CreateRequiredAttributes(AParent: IXMLNode; ANodes: array of string);
|
procedure CreateRequiredAttributes(AParent: IXMLNode; ANodes: array of string);
|
||||||
procedure SortChildNodes(AParent: IXMLNode; ASortOrder: array of string);
|
procedure SortChildNodes(AParent: IXMLNode; ASortOrder: array of string);
|
||||||
|
|
||||||
|
function IsValidXMLChar(AChar: WideChar): Boolean;
|
||||||
|
function GetValidXMLText(AText: WideString): WideString;
|
||||||
|
|
||||||
{ Now wraps the JclMime implementation:
|
{ Now wraps the JclMime implementation:
|
||||||
Lightening fast Mime (Base64) Encoding and Decoding routines.
|
Lightening fast Mime (Base64) Encoding and Decoding routines.
|
||||||
@ -583,6 +581,37 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
function IsValidXMLChar(AChar: WideChar): Boolean;
|
||||||
|
begin
|
||||||
|
Result := (Ord(AChar) in [9, 10, 13]) or
|
||||||
|
(Ord(AChar) >= 32);
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
function GetValidXMLText(AText: WideString): WideString;
|
||||||
|
var
|
||||||
|
validText: WideString;
|
||||||
|
sourcePos: Integer;
|
||||||
|
destPos: Integer;
|
||||||
|
|
||||||
|
begin
|
||||||
|
SetLength(validText, Length(AText));
|
||||||
|
destPos := 0;
|
||||||
|
|
||||||
|
for sourcePos := 1 to Length(AText) do
|
||||||
|
begin
|
||||||
|
if IsValidXMLChar(AText[sourcePos]) then
|
||||||
|
begin
|
||||||
|
Inc(destPos);
|
||||||
|
validText[destPos] := AText[sourcePos];
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
SetLength(validText, destPos);
|
||||||
|
Result := validText;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
{ --- JclMime implementation from here. }
|
{ --- JclMime implementation from here. }
|
||||||
type
|
type
|
||||||
{$IFDEF WIN64}
|
{$IFDEF WIN64}
|
||||||
|
Loading…
Reference in New Issue
Block a user