Entwickler-Ecke

Dateizugriff - XML mit mit em-rdf namespace


mindtrap - Di 05.08.08 16:52
Titel: XML mit mit em-rdf namespace
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:


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
<?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-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
  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 [http://www.w3.org/TR/2004/REC-rdf-syntax-grammar-20040210/#section-Namespace] habe ich auch schon nach einer Antwort gesucht, aber entweder bin ich blind oder ignorant. oO

Vielleicht kann mir jemand weiterhelfen.

Thx

Hab das jetzt auch mal in der DP gepostet:
http://www.delphipraxis.net/post924579.html


mindtrap - Mi 06.08.08 19:46

*help*

Die Lösung steht in der DP.

http://www.delphipraxis.net/post924951.html#924951