XML.LoadFromString
Revision as of 12:29, 16 June 2021 by 1>Admin
| LoadFromString (Загрузка из строки) | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||
Загружает XML-объект из строки, если строка содержит ошибки форматирования, загрузка будет остановлена и функция возвратит список ошибок в виде строки со знаками переноса на другую строку. До загрузки все данные, хранившиеся в XML-объекте будут удалены и объект будет очищен.
Синтаксис
XML.LoadFromString(<Строка с XML (STRING)>):<Ошибки при загрузке строки (STRING)>
Аргументы
<Строка с XML (STRING)>- Аргумент задает строку для загрузки.
Возвращаемое значение
Возвращает список ошибок в виде строки, разделенной знаками переноса строк, либо пустую строку, если ошибки не произошло. Важно: если функция возвратила ошибку, документ не был загружен полностью и не будет иметь структуры (обход по веткам документа будет невозможен).
Примеры
//Данный пример является продолжением примера из XML.LoadFromFile, определяющим кодировку текста до начала проверки структуры
var aUTF16 Export;
//Проверка начала файла без BOM в формате UTF-16
aUTF16:="<"+chr(0)+"?"+chr(0)+"x"+chr(0)+"m"+chr(0)+"l";
Function _ПроверитьКорректностьXMLВПапке(аПуть)
Form.StatusText("Подсчитывается "+аПуть+"...");
aList:=File.LoadFileNames(аПуть+"*.*");
For i:=1 To aList.Size() Do
аФайл:=aList.GetName(i);
If File.IsDirectory(аПуть+аФайл) Then
//Исключаем ссылки на другие папки (к примеру "Application Data" ссылается на себя же и т.п.)
If File.GetFileAttributes(аПуть+аФайл) And _FILE_ATTRIBUTE_REPARSE_POINT=0 Then
_ПроверитьКорректностьXMLВПапке(AddBackslash(аПуть+аФайл));
EndIf;
Else
If Uppercase(GetExt(аФайл))="XML" Then
//Найдем тип кодировки файла
Стр:=FileToString(аПуть+аФайл,-1);
If Left(Стр,2)=Chr(255,1)+Chr(254,1) Then //BOM UTF-16
Стр:=TranslateFrom(Стр,1200);
ElseIf Left(Стр,3)=Chr(239,1)+Chr(187,1)+Chr(191,1) Then //BOM UTF-8
Стр:=TranslateFrom(Стр,65001);
ElseIf pos("<?xml",Стр)=1 Then
Стр1:=Стр;
Стр1:=Uppercase(TearStr(Стр1,"?>"));
TearStr(Стр1,"ENCODING=");
If pos("UTF-8",Стр1)>0 Then
Стр:=TranslateFrom(Стр,65001);
ElseIf pos("WINDOWS-",Стр1)>0 Then
TearStr(Стр1,"WINDOWS-");
Стр1:=Number(Стр1);
If Стр1>0 Then
Стр:=TranslateFrom(Стр,Стр1);
EndIf;
EndIf;
ElseIf pos(aUTF16,Стр)=1 Then
Стр:=TranslateFrom(Стр,1200);
EndIf;
аОб:=XML.Create();
Стр:=аОб.LoadFromString(Стр);
If not IsEmpty(Стр) Then
Message("Ошибки при проверке файла "+(аПуть+аФайл)+":"+_NEWLINE+Стр,"!");
EndIf;
EndIf;
EndIf;
EndDo;
EndFunction
аПуть:="C:\";
_ПроверитьКорректностьXMLВПапке(аПуть);