![]() |
XML-Datei auswerten
Hallo,
ich habe eine XML-Datei mit folgendem Aufbau: Zitat:
Delphi-Quellcode:
Kann mir jemand helfen, was ich da falsch mache?
var
fn: String; xmlfile: TXmlDocument; sections: IXMLNode; count: integer; begin xmlfile := TXmlDocument.Create(nil); fn := .....; xmlfile.LoadFromFile(fn); sections := xmlfile.DocumentElement.ChildNodes['EMH']; <<---- ungültige Zeigeroperation aufgetreten count := sections.ChildNodes.count; ... Ciao Stefan |
AW: XML-Datei auswerten
EHM ist das DocumentElement.
Aber eigentlich sollte es da nicht knallen, sonder nur NIL zurück kommen. Verwende statt TXmlDocument besser IXmlDocument, also durchwerg Interfaces und kein Mischmasch aus Interfaces und Klasseninstanzen. |
AW: XML-Datei auswerten
Schau doch im Debugger mal nach, was der sich wirklich aus deiner Pfadangabe fn zieht. Encoding, und was da alles schief laufen kann.
Nimmt man den XML-Inhalt von dir und steckt ihn rein funktioniert alles wie es soll:
Delphi-Quellcode:
program Project1;
uses System.Win.ComObj, Xml.XmlIntf, Xml.XmlDoc; const xml = '<?xml version="1.0" encoding="UTF-8"?>'+ '<EMH>'+ '<smlCommand>'+ '<key>0.0.0</key>'+ '<value>0100000000FF</value>'+ '<typ>00</typ>'+ '</smlCommand>'+ '<smlCommand>'+ '<key>0.0.1</key>'+ '<value>0100000001FF</value>'+ '<typ>00</typ>'+ '</smlCommand>'+ '</EMH>'; var xmlDoc: IXMLDocument; emhNode: IXMLNode; begin CoInitializeEx(0, 0 {COINIT_MULTITHREADED}); xmlDoc := LoadXMLData(xml); // geht! // geht auch: //xmlDoc := TXMLDocument.Create(nil); //xmlDoc.LoadFromXML(xml); emhNode := xmlDoc.DocumentElement; Write('<EMH> hat ', emhNode.ChildNodes.Count, ' Einträge'); readln; end. |
AW: XML-Datei auswerten
Vielen herzlichen Dank, funktioniert!
Ciao Stefan |
AW: XML-Datei auswerten
Und woran lag es nun?
Lass' uns bitte nicht dumm sterben :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:29 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz