37 lines
971 B
Plaintext
37 lines
971 B
Plaintext
Class XML.Students [ Abstract ]
|
|
{
|
|
|
|
XData XMLData
|
|
{
|
|
<Students>
|
|
<Student Name="April" Gender="F" DateOfBirth="1989-01-02" />
|
|
<Student Name="Bob" Gender="M" DateOfBirth="1990-03-04" />
|
|
<Student Name="Chad" Gender="M" DateOfBirth="1991-05-06" />
|
|
<Student Name="Dave" Gender="M" DateOfBirth="1992-07-08">
|
|
<Pet Type="dog" Name="Rover" />
|
|
</Student>
|
|
<Student DateOfBirth="1993-09-10" Gender="F" Name="Émily" />
|
|
</Students>
|
|
}
|
|
|
|
ClassMethod Output() As %Status
|
|
{
|
|
// get xml stream from the 'XData' block contained in this class and parse
|
|
Set xdata=##class(%Dictionary.CompiledXData).%OpenId($this_"||XMLData",, .sc)
|
|
If $$$ISERR(sc) Quit sc
|
|
Set sc=##class(%XML.TextReader).ParseStream(xdata.Data, .hdlr)
|
|
If $$$ISERR(sc) Quit sc
|
|
|
|
// iterate through document, node by node
|
|
While hdlr.Read() {
|
|
If hdlr.Path="/Students/Student", hdlr.MoveToAttributeName("Name") {
|
|
Write hdlr.Value, !
|
|
}
|
|
}
|
|
|
|
// finished
|
|
Quit $$$OK
|
|
}
|
|
|
|
}
|