function TForm1.parseXMLFile(sDateiname: OleVariant): Boolean;
var
xmlDoc: IXMLDOMDocument2;
node: IXMLDOMNode;
nodes: IXMLDOMNodeList;
i: Integer;
begin
Result := FALSE;
case XML_VERSION of
26: xmlDoc := CoDOMDocument26.Create;
30: xmlDoc := CoDOMDocument30.Create;
40: xmlDoc := CoDOMDocument40.Create;
end;
//xmlDoc.setProperty('NewParser', true); //--> ab 4.0 Version!
xmlDoc.validateOnParse := False;
xmlDoc.resolveExternals := False;
xmlDoc.async := FALSE;
xmlDoc.preserveWhiteSpace := False;
// prüfen ob
XML-File vorhanden:
if not xmlDoc.load(sDateiname) then
begin
// prüfen ob
XML-File "wohlgeformt" ist:
If xmlDoc.parseerror.errorCode <> 0 then
begin
MessageDlg( Format('
XML-Datei %s ist nicht wohlgeformt --> Abbruch'+#13#10#+#13#10+
'Code: ' + #9 + ' %d' + #13#10 +
'Reason: ' + #9 + ' %s' + #13#10 +
'
URL: ' + #9#9 + ' %s' + #13#10 +
'SrcText: ' + #9 + ' %s' + #13#10 +
'Line: ' + #9#9 + ' %d' + #13#10 +
'LinePos: ' + #9 + ' %d' + #13#10 +
'FilePos: ' + #9 + ' %d' + #13#10,
[sDateiname,
xmlDoc.parseerror.Get_errorCode,
xmlDoc.parseerror.Get_reason(),
xmlDoc.parseerror.Get_url,
xmlDoc.parseerror.Get_srcText,
xmlDoc.parseerror.Get_line,
xmlDoc.parseerror.Get_linepos,
xmlDoc.parseerror.Get_filepos]),
mtWarning, [mbOK], 0);
Exit;
end else
begin
AddToMemo('
XML-Datei nicht vorhanden!');
exit;
end;
end else
AddToMemo('
XML-Datei erfolgreich geladen!');
try
// Auflistung einer NodeListim Memo3: --------------------------------------
nodes := xmlDoc.documentElement.selectNodes('//Bewerbung[0]/*');
node := xmlDoc.selectSingleNode('//Bewerbung[0]/*');
for i:=0 to nodes.length-1 do
begin
if (node <> nil) then
begin
node := nodes.nextNode;
Memo3.Lines.Add(node.Get_nodeName + #9 + node.Get_text);
end;
end;
Memo3.Lines.Add('----------------------------------------');
Result := TRUE;
except
;
end;
end;