Einzelnen Beitrag anzeigen

Der schöne Günther
Online

Registriert seit: 6. Mär 2013
6.159 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

Woher weiß ich, von welchem Typ meine XML-Inhalte sind?

  Alt 9. Aug 2013, 13:37
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.
  Mit Zitat antworten Zitat