XML-Datei einlesen

22. Oktober 2015 10:03

Hallo Gemeinde,

ich habe einen funktionierenden Report, der XML-Dateien einliest. Nun gibt es einen neuen TAG, der mehrere Beginn und Endatums beinhaltet. Leider mache ich solches XML-Einlesen sonst nie.
Könnte mir da bitte jemand helfen, was an meinen Code noch falsch ist? Danke...

... Ältere XML-Part - gleiche Ebene
<Datum>
<beginn>29.12.2014</beginn>
<ende>05.01.2015</ende>
</Datum>
<Datum>
<beginn>16.01.2015</beginn>
</Datum>
<Datum>
<beginn>30.01.2015</beginn>
<ende>05.02.2015</ende>
</Datum>
... Ältere XML-Part - gleiche Ebene


Code:
Variablen:
UrlaubstageNode   Automation   'Microsoft XML, v3.0'.IXMLDOMNode   
PeriodeNode   Automation   'Microsoft XML, v3.0'.IXMLDOMNode   
UrlaubNodeList   Automation   'Microsoft XML, v3.0'.IXMLDOMNodeList   
UrlaubNode   Automation   'Microsoft XML, v3.0'.IXMLDOMNode   
UrlaubCount   Integer      
urlaubBeginn2   Date      
urlaubEnde2   Date      

// Älterer funktionierender Code
// Mein neuer Code+
    UrlaubNodeList := XMLDOMNode.selectNodes('Datum');
    UrlaubCount:=0;
    IF NOT ISCLEAR(UrlaubNodeList) THEN BEGIN
    WHILE (UrlaubCount  < UrlaubNodeList.length) DO BEGIN
       UrlaubNode  := UrlaubNodeList.item(UrlaubCount);
       UrlaubCount+=1;
       CLEAR(urlaubEnde2);
       CLEAR(urlaubBeginn2);
    IF NOT ISCLEAR(UrlaubNode) THEN BEGIN // Fehlermeldung - Für diese Automation Variable wurde keine Instanz erstellt.
                                         //Sie können ihr eine Instanz zuordnen, indem Sie sie entweder erstellen oder zuordnen.
        XMLDOMNodeChild2 := PeriodeNode.selectSingleNode('begin');
        EVALUATE(urlaubBeginn2,XMLDOMNodeChild2.text);
        XMLDOMNodeChild2 := PeriodeNode.selectSingleNode('end');
        IF NOT ISCLEAR(XMLDOMNodeChild2) THEN
          EVALUATE(urlaubEnde2,XMLDOMNodeChild2.text)
            ELSE urlaubEnde2 := urlaubBeginn2;
        END;
     END;
    END;
// Mein neuer Code-   
// Älterer funktionierender Code