![]() |
XML-Header auslesen bei IXMLDOMDocument
Hallo,
habe mich erstmals mit XML in Delphi beschäftigt und mich dabei hauptsächlich an das Tutorial von CalganX gehalten. Eine Frage habe ich jedoch noch, wenn ich eine XML-Datei per load() lade: Wie komme ich an die Header-Zeile, also z.B. diese hier:
XML-Code:
Gibt es hier eine extra Funktion, wie ich diese Attribute auslesen kann (Version, Encoding, etc.)?
<?xml version="1.0" encoding="UTF-8"?>
... Ich nutze IXMLDOMDocument3. Noch was anderes, was mir aufgefallen ist (hoffe, das ist jetzt nicht zu sehr OT): Muss man hier das erstellte IXMLDOMDocument nicht irgendwie wieder freigeben? Funktioniert dies über die Funktion _Release() ? Danke schonmal für eure Antworten :xmas: |
Re: XML-Header auslesen bei IXMLDOMDocument
* PUSH *
|
Re: XML-Header auslesen bei IXMLDOMDocument
Hallo,
der XML-Header ist bei einem wohlgeformten XML-Dokument immer der erste Knoten in einem Dokument - zumindest habe ich es noch nie anders gesehen. Zugriff bekommst du also über
Delphi-Quellcode:
Die Attribute liest du über
myXMLDocument.childNodes[0];
Delphi-Quellcode:
aus.
myXMLDocument.childNodes[0].attributes.getNamedItem( 'version' );
myXMLDocument.childNodes[0].attributes.getNamedItem( 'encoding' ); ... usw. ... Gruß |
Re: XML-Header auslesen bei IXMLDOMDocument
Zitat:
Zitat:
Gruß |
Re: XML-Header auslesen bei IXMLDOMDocument
Zitat:
1, Diese auch unabsichtlich überwinden (und sich über Abstürze wundern) 2, Fehler in Referenzzählung von verwendeten COM-Objekten beheben (z.B. um den IE halbwegs erträglich zu gestalten) |
Re: XML-Header auslesen bei IXMLDOMDocument
Danke für eure Antworten.
Da ich über
Delphi-Quellcode:
auf den Root-Knoten (und dessen Kinder-Knoten) zugegriffen habe, wusste ich nicht, dass das auch über die childNodes des IXMLDOMDocuments geht. Danke für den Hinweis!
myXMLDocument.documentElement
Also ich verstehe noch nicht so ganz, mit:
Delphi-Quellcode:
erzeuge ich doch ein Objekt, dass auf dem Interface basiert.
myXMLDocument := CoDOMDocument60.Create;
Warum muss ich dieses Objekt nicht wieder freigeben? Es belegt doch schließlich auch Speicher? |
Re: XML-Header auslesen bei IXMLDOMDocument
Zitat:
|
Re: XML-Header auslesen bei IXMLDOMDocument
Okay, danke für deine Antwort ;)
|
Re: XML-Header auslesen bei IXMLDOMDocument
Zitat:
...:cat:... |
Re: XML-Header auslesen bei IXMLDOMDocument
So, nun habe ich aber etwas festgestellt, wo ich mir keinen Reim drauf machen kann:
Delphi-Quellcode:
Kann mir das einer erklären?
// Header des geladenen XML-Dokuments:
<?xml version="1.0" encoding="UTF-8"?> var xml: IXMLDOMDocument3; ... for i := 0 to xml.childNodes[0].attributes.length - 1 do // klappt, ich bekomme 'version' und 'encoding' nacheinander angezeigt ShowMessage(xml.childNodes[0].attributes[i].nodeName); // hier bekomme ich nur das hier angezeigt: // <?xml version="1.0"?> ShowMessage(xml.childNodes[0].xml); // klappt dagegen ohne Probleme, auch mit allen Attributen: ShowMessage(xml.childNodes[1].xml); Warum wird mir bei xml.childNodes[0].xml nur das erste Attribut angezeigt? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:10 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 by Thomas Breitkreuz