Difference between revisions of "XML.LoadFromString"
1>Admin |
m (1 revision imported) |
(No difference)
|
Latest revision as of 08:06, 28 June 2021
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ВПапке(аПуть);