Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Delphi XML mit mit em-rdf namespace (https://www.delphipraxis.net/118398-xml-mit-mit-em-rdf-namespace.html)

mindtrap 7. Aug 2008 03:31


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:

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

marabu 7. Aug 2008 08:07

Re: XML mit mit em-rdf namespace
 
Herzlich willkommen in der Delphi-PRAXiS, mindtrap.

Du hast den namespaceURI nicht angegeben:

Delphi-Quellcode:
begin
  // ...
    MasterNode := doc.DocumentElement.ChildNodes.FindNode('Description', doc.DomDocument.namespaceURI);
    ChildNode := MasterNode.ChildNodes.FindNode('em:id', 'http://www.mozilla.org/2004/em-rdf#');
  // ...
end;
Freundliche Grüße

mindtrap 7. Aug 2008 14:07

Re: XML mit mit em-rdf namespace
 
Zitat:

Zitat von mindtrap
Ich habe verschiedene Varianten als Schlüssel versucht: "em:id", "id", namespaceuri + "id"... usw.
FindNode gibt immer nil zurück.

Ich gebe zu, dass ich mich wohl nicht ganz korrekt ausgedrückt habe bei dieser Beschreibung.
Die Namespaceuri habe ich auch schon in deiner Variante versucht.
Leider klappt das auch nicht.

Ich versteht's nicht. :gruebel:

marabu 7. Aug 2008 14:30

Re: XML mit mit em-rdf namespace
 
Ich habe meine beiden Code-Zeilen mit D7 und einer INSTALL.RDF aus einer zufällig gewählten XPI-Datei getestet.
Bei mir funktioniert es.

Kann ich dir noch irgendwie helfen?

mindtrap 7. Aug 2008 17:20

Re: XML mit mit em-rdf namespace
 
Ne Brille geben. -.-

Tippfehler in Strings werden bestraft... :wall:

Danke, es funktioniert. :cheer:


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:27 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz