Hi,
die vom Firefox verwendeten RDF-Dateien machen mir momentan das Leben etwas schwer.
Ich versuche eigentlich nur die Childnodes auszulesen bzw. gezielt bestimmte Attribute.
Ein kleines Beispiel für eine solche Datei:
Code:
<?
xml version="1.0"?>
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:em="http://www.mozilla.org/2004/em-rdf#">
<Description about="urn:mozilla:install-manifest">
<em:id>{77b819fa-95ad-4f2c-ac7c-486b356188a9}</em:id>
<em:name>IE Tab</em:name>
<em:version>1.5.20080803</em:version>
<em:description>Enables you to use the embedded IE engine within Mozilla/Firefox.</em:description>
<em:creator>Hong Jen Yee (PCMan)</em:creator>
<em:developer>yuoo2k</em:developer>
<em:homepageURL>https://addons.mozilla.org/firefox/addon/1419</em:homepageURL>
<em:optionsURL>chrome://ietab/content/ietabSetting.xul</em:optionsURL>
<em:iconURL>chrome://ietab/skin/ietab-icon.png</em:iconURL>
...
Plan ist es hier z.B. an die Nodes id, name, version zu kommen.
Code sagt mehr als tausend Worte:
Delphi-Quellcode:
Doc := TXMLDocument.Create( Self );
Doc.LoadFromFile( cExtPath + '\install.rdf' );
Doc.Active := True;
// Die MasterNode wird gefunden
MasterNode := Doc.DocumentElement.ChildNodes.FindNode( 'Description', Doc.DOMDocument.namespaceURI );
// ChildNode bleibt nil
ChildNode := MasterNode.ChildNodes.FindNode( 'em:id' );
// ChildNode wird korrekt erkannt, aber eben nicht über die Suche
// ChildNode := MasterNode.ChildNodes.First;
while ( Assigned( ChildNode ) ) do
begin
end;
Ich habe verschiedene Varianten als Schlüssel versucht: "em:id", "id", namespaceuri + "id"... usw.
FindNode gibt immer nil zurück.
Arbeite ich mit .NextSibling etc. kann ich problemlos durch die Struktur gehen, brauche ich aber nicht.
Hier habe ich auch schon nach einer Antwort gesucht, aber entweder bin ich blind oder ignorant. oO
Vielleicht kann mir jemand weiterhelfen.
Thx
PS.: Das Problem habe ich auch in der EE gepostet.
http://www.delphi-forum.de/posting.p...tpost&p=516735