[This is preliminary documentation and is subject to change.]
| C# | Visual Basic | Visual C++ |
[SerializableAttribute] public abstract class SifElement : Element
<SerializableAttribute> _ Public MustInherit Class SifElement _ Inherits Element
[SerializableAttribute] public ref class SifElement abstract : public Element
| All Members | Constructors | Methods | Properties | ||
| Icon | Member | Description |
|---|---|---|
| SifElementSifElementNew(IElementDef) | Constructs a SifElement | |
| AddChild(IElementDef, SifElement) | Adds a child SifElement | |
| AddChild(SifElement) | Adds a child SifElement | |
| ChildCount | Returns the number of children elements of this SIFElement | |
| Clone()() | (Overrides Element.Clone()().) | |
| CompareGraphTo(SifElement) | Compares all child elements and attributes of this Element with that
of another Element. | |
| Create(SifElement, IElementDef) |
reates an instance of a SIFElement from its ID and adds it to the parent,
taking into account rules about collapsed elements
| |
| EffectiveSIFVersion | Gets the SifVersion effective for this element by searching the ancestry
until a valid SifVersion is returned by one of the parent objects.
| |
| FieldCount | Gets the number of fields for this object | |
| GetChild(IElementDef) | Gets the child object with the matching IElementDef | |
| GetChild(IElementDef, String) | Gets the child object with the matching IElementDef and key | |
| GetChild(String, String) | Gets the child object with the matching element name and key | |
| GetChild(IElementDef, array<String>[]()) | Gets a child object identified by its IElementDef and composite key | |
| GetChildren()() |
Returns a read-only list of all Child elements
| |
| GetChildren(IElementDef) | Gets all child objects with a matching IElementDef | |
| GetChildren(String) | Gets all child objects with a matching version-independent element name | |
| GetContent()() | Gets an ordered list of all child elements and fields that are in a
changed state and do not have a null value. | |
| GetContent(SifVersion) | Gets an ordered list of all child elements and fields that are in a
changed state and do not have a null value. | |
| GetField(IElementDef) | Gets a field's value and sequence number | |
| GetField(String) | ||
| GetFields()() |
Gets a read-only list of the fields for this object
| |
| GetFieldValue(IElementDef) | Gets a field's value as a String | |
| HasTextValue()() | Does this element have a text value? | |
| Key | ||
| RemoveChild(SifElement) | Removes a child object | |
| RemoveChild(IElementDef, String) | Removes a child object identified by its IElementDef and key | |
| RemoveChild(IElementDef) | Removes a child object identified by its IElementDef | |
| RemoveChild(IElementDef, array<String>[]()) | Removes a child object identified by its IElementDef and complex key | |
| SetChanged(Boolean) | Sets this element and each of its children to the specified changed
state. An object in the changed state will be written to the XML stream
when a SIF message is rendered; objects that are not changed will be
excluded.
(Overrides Element.SetChanged(Boolean).) | |
| SetChildren(IElementDef, array<SifElement>[]()) |
Adds the specified children as an array to the SIFElement object.
| |
| SetEmpty(Boolean) | Sets this element and each of its children to the specified empty
state. An object in the empty state will be written to an XML stream as
an empty element with no children.
(Overrides Element.SetEmpty(Boolean).) | |
| SetField(IElementDef, String) |
Sets a field's value
| |
| SetField(IElementDef, SifSimpleType) | Sets a field's value | |
| SetField(SimpleField) |
Sets a SimpleField value to this SifElement
| |
| SifValue |
Returns the underlying SIF data type that is stored in this field
(Overrides Element.SifValue.) | |
| SifVersion | Gets or Sets the SifVersion associated with this element, if applicable.
The base class implementation of this method always returns null.
| |
| Tag | Gets the tag name for this element. The effective version of SIF is
used to determine the exact tag name since tag names may change from one
version of SIF to the next. | |
| TextValue | Gets the text value of this element, if applicable. The
text value will be parsed into the native datatype of the element. (Overrides Element.TextValue.) | |
| XmlId |
Gets or sets the unique identifier for this object.
This value is not used by the ADK and is reserved for use by the application.
|
Each object type and complex field element defined in the SIF Specification is encapsulated by a subclass of SifElement. Objects include <StudentPersonal>, <StaffPersonal>, <BusInfo>, etc. while complex field elements include <Address>, <OtherId>, <PhoneNumber> and so on. Simple fields which have only a string value but which have no child elements are encapsulated by the SimpleField class instead of by SifElement. An example of such a field is the <FirstName> child of the <Name> element.
SifElements may have a single parent and zero or more children. Complex fields are always represented as child objects. The AddChild, GetChildren, RemoveChild, countChildren, and removeAllChildren methods are provided to manipulate the child list. Simple fields are stored in a dictionary keyed by the field's IElementDef constant as defined in the SifDtd class. The value of a simple field is encapsulated by a SimpleField object, which stores not only the current string value of the field but also its change state and a reference to its IElementDef.
Comparing SifElement Graphs
Agent developers do not typically work with SifElement objects directly. The compareGraphTo method is one exception. Agents can use this method to compare the contents of two SifElements in order to determine which elements and attributes are different. For an example of how this method can be used to assist in SIF_Event reporting, refer to the SchoolInfoProvider Adk Example program. Similarly, the SIFDiff example program demonstrates using the compareGraphTo method to display the differences between two SIF Data Objects read from disk.
SifVersion
The abstract getSIFVersion method returns the SifVersion that is currently in effect for this object. This is often used to determine the element tag name and sequence number when rendering XML because these may change from one version of SIF to the next. However, the SifElement class does not itself keep track of version; it is up to the derived class to do so. Both SifDataObject and SifMessagePayload store the SIF version associated with their objects. By working up the object ancestry, it is possible to determine the SifVersion currently associated with a SifElement. The effectiveSIFVersion method performs this task.