ReadToXML(Var Xml: Variant);
ReadToXML(Var Xml: object);
Xml. XML-объект, в который будут считаны данные из объекта.
Метод ReadToXML считывает данные из объекта пользовательского класса в XML-формате и загружает их в указанную переменную.
Перед выполнением метода ReadToStream необходимо вызвать метод Load для чтения данных из базы репозитория в текущий объект в памяти ПК.
Для выполнения примера предполагается наличие в репозитории объекта пользовательского класса с идентификатором «OBJ_CUSTOM».
Добавьте ссылки на системные сборки «Metabase», «Xml».
Sub UserProc;
Var
Mb: IMetabase;
Object: IMetabaseObject;
CustomObject: IMetabaseCustomObject;
Writer: IMetabaseCustomObjectWriter;
Reader: IMetabaseCustomObjectReader;
XmlVar: Variant;
xmlDE: IXmlDomElement;
XmlDoc: FreeThreadedDOMDocument60;
Begin
Mb := MetabaseClass.Active;
Object := Mb.ItemById("OBJ_CUSTOM").Edit;
CustomObject := Object As IMetabaseCustomObject;
XmlDoc := New FreeThreadedDOMDocument60.Create;
XmlDoc.loadXML("<nodes> <node1>ITEM1=3</node1> <node2>ITEM2=0</node2> </nodes>");
Writer := CustomObject.CreateWriter;
Writer.WriteFromXML(XmlDoc);
Writer.Save;
Reader := CustomObject.CreateReader;
Reader.Load;
Reader.ReadToXML(XmlVar);
XmlDoc := XmlVar As FreeThreadedDOMDocument60;
xmlDE := XmlDoc.selectSingleNode("nodes") As IXmlDomElement;
Debug.WriteLine(xmlDE.xml);
Object.Save;
End Sub UserProc;
После выполнения примера в объект будут записаны пользовательские данные в формате XML, затем эти данные будут прочитаны и выведены в окно консоли.
Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.
Imports Prognoz.Platform.Interop.MsXml2;
…
Public Shared Sub Main(Params: StartParams);
Var
Mb: IMetabase;
Obj: IMetabaseObject;
CustomObject: IMetabaseCustomObject;
Writer: IMetabaseCustomObjectWriter;
Reader: IMetabaseCustomObjectReader;
XmlVar: object;
xmlDE: IXmlDomElement;
XmlDoc: FreeThreadedDOMDocument60;
Begin
Mb := Params.Metabase;
Obj := Mb.ItemById["OBJ_CUSTOM"].Edit();
CustomObject := Obj As IMetabaseCustomObject;
XmlDoc := New FreeThreadedDOMDocument60.Create();
XmlDoc.loadXML("<nodes> <node1>ITEM1=3</node1> <node2>ITEM2=0</node2> </nodes>");
Writer := CustomObject.CreateWriter();
Writer.WriteFromXML(XmlDoc);
Writer.Save();
Reader := CustomObject.CreateReader();
Reader.Load();
Reader.ReadToXML(Var XmlVar);
XmlDoc := XmlVar As FreeThreadedDOMDocument60;
xmlDE := XmlDoc.selectSingleNode("nodes") As IXmlDomElement;
System.Diagnostics.Debug.WriteLine(xmlDE.xml);
Obj.Save();
End Sub;
См. также: