XML Objects Reader class.
A usage example follows:
#include %occStatus
// Create a new XML Reader class
Set reader = ##class(%XML.Reader).%New()
// Begin processing of the XML input
Set sc=reader.OpenFile(filename)
If $$$ISERR(sc) Do $system.OBJ.DisplayError(sc) Quit
// Associate a class name with the XML element name
Do reader.Correlate("Person","Sample.Person")
// read Sample.Person objects from xml file
Set Count=0
While reader.Next(.person,.sc) {
Write person.Name_" imported.",!
Set Count=Count+1
Set sc=person.%Save()
If $$$ISERR(sc) Do $system.OBJ.DisplayError(sc) Quit
}
If $$$ISERR(sc) Do $system.OBJ.DisplayError(sc) Quit
Write Count_" Sample.Person instances found."
property CheckRequired as %Boolean [ InitialExpression = 0 ];
Checking the existence of REQUIRED properties is off by default in %XML.Reader.
To turn on REQUIRED property checking. set the CheckRequired property to 1 (default is 0).
property IgnoreNull as %String [ InitialExpression = 0 ];
The runtime specification of the XMLIGNORENULL parameter to %XML.Adaptor.
IgnoreNull specifies the value of
XMLIGNORENULL at runtime as either 0, 1 or inputonly.
IgnoreNull="inputonly" is equivalent to IgnoreNull=1.
This property specifies the schema specifications that should be used when validating the
document. See %XML.SAX.Parser for a full description of this property.
If UsePPGHandler is true (1), then force document parsing to use PPG memory.
If UsePPGHandler is false (0), then force document parsing to use local array memory.
If UsePPGHandler is not set ( or = ""), then use default memory -- usually local array memory.
Close and cleanup the %XML.Document. This method is included for
backward compatibility. The %XML.Document will be cleaned up
anyway during object cleanup.
Correlate() defines an XML Element to class correlation. Any
elements encountered by Next() that are in the correlation table will
cause the correlated class to be instantiated and its XMLImport method
to be called with the current XML node passed as a parameter. Further
examination of child nodes is skipped for correlated elements.
Matching of elements is based on the element name that is specified in
the element argument. If the namespace argument
is also specified, then the XML namespace of the element must also match.
CorrelateRoot defines the root element to be correlated to the specified
class. The root element when encountered by Next() will
cause the correlated class to be instantiated and its XMLImport method
to be called with the root XML node passed as a parameter. Further
examination of child nodes is skipped for correlated elements.
Next() returns 1 (true), if the next object matching one of the Correlate criteria
is found and successfully imported. Next() returns 0 (false) and a %Status of $$$OK in sc
after all objects have been imported. Next() returns 0 (false) and an error %Status in sc,
if an error has occurred importing this object.
The namespace argument indicates the default namespace
for this XML file.
Import XML source from a URL using %XML.Document.
If httprequest argument is specified, then this will be used as the %Net.HttpRequest object to open the URL.
To open https URLs:
set reader=##class(%XML.Reader).%New()
set httprequest=##class(%Net.HttpRequest).%New()
set httprequest.SSLConfiguration="...."
set status=reader.OpenURL("https://.....",,httprequest)
method Rewind()
Restart reading at the beginning of the XML document.
All correlations are cleared and Correlate must be called again
for the required elements.