Einfaches Beispiel:
Code:
<rootNode>
<eineZahl>42</eineZahl>
<einBoolean>False</einBoolean>
<einFloat>99.3</einFloat>
</rootNode>
Bislang bin ich immer hingegangen und
- habe den gesuchten Knoten (z.B. "eineZahl") gesucht (Typ IXMLNode)
- mir den enthaltenen Wert geholt (IXMLNode.NodeValue)
- und diesen Wert in eine Variable gesteckt (meineZahl := meinKnoten.NodeValue).
Ich habe mich immer gefreut, dass der implizite Cast von
NodeValue
nach irgendwohin so toll funktioniert. NodeValue ist übrigens vom Typ
OleVariant
. Nun möchte ich nicht mehr implizit irgendwohin casten, sondern wissen, was für ein Typ das überhaupt ist.
System.Variants.VarType(Variant):TVarType
liefert leider immer
OleStr
zurück.
Mir ist klar, dass die Sache nicht eindeutig ist: "42" könnte ein Integer, eine Fließkommazahl oder ein String sein.
Was ist der beste Ansatz? In der
XML für jeden Knoten anzugeben, von welchem Typ er ist? Beispiel:
Code:
<rootNode>
<eineZahl type="Integer">42</eineZahl>
<einBoolean type="Boolean">False</einBoolean>
<einFloat type="Single">99.3</einFloat>
</rootNode>
Mit
IXMLNode.NodeType
kann ich auch nichts anfangen, das sagt ja nur aus, was für einen Stellenwert der Knoten selbst in der
XML hat, nichts über seinen Inhalt.