AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

XPath mit ADOM v4 möglich?

Ein Thema von Whookie · begonnen am 11. Sep 2014 · letzter Beitrag vom 12. Sep 2014
Antwort Antwort
Whookie

Registriert seit: 3. Mai 2006
Ort: Graz
441 Beiträge
 
Delphi 10.3 Rio
 
#1

XPath mit ADOM v4 möglich?

  Alt 11. Sep 2014, 17:49
Ich arbeite schon einige Zeit mit XML-Dateien aber habe bisher immer selber die Nodes durchlaufen. Heute wollte ich mal einwenig mit XPath spielen aber entweder habe ich noch ein Zuordnungsproblem oder irgendwas anderes geht nicht so wie es sollte!

Im angehängten Beispiel kann man über den Schalter "XPath..." eine Delphi .dproj Datei laden (zB.: die dieses Projekts) und danach sollten alle "CfgParent" Nodes abgefragt werden, aber egal der XPath-Ausdruck auch aussieht ich bekomme stets eine leere Liste zurück.
Angehängte Dateien
Dateityp: 7z XPath.7z (4,0 KB, 4x aufgerufen)
Whookie

Software isn't released ... it is allowed to escape!
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.110 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: XPath mit ADOM v4 möglich?

  Alt 11. Sep 2014, 18:26
Das liegt doch am Namespace, oder?

Lösch testweise mal das xmlns="http://..." im obersten Knoten und wundere dich.

http://www.delphipraxis.net/159801-x...namespace.html
  Mit Zitat antworten Zitat
Whookie

Registriert seit: 3. Mai 2006
Ort: Graz
441 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: XPath mit ADOM v4 möglich?

  Alt 11. Sep 2014, 19:11
Lösch testweise mal das xmlns="http://..." im obersten Knoten und wundere dich.
Auch das scheint keine Auswirkung zu haben jedenfalls nicht mit 'CfgParent' oder 'CfgParent/..'

Ok, hab ich mal drüber geschaut aber wenn ich da den ganzen Baum durchlaufen muss kann ich die Tags gleich wieder selber rausholen.
Zudem gibts ja weder IXMLDOMNodeList und IXMLDOMDocument2 im adomxmldom.



Bleibt die abschließende Frage: Gibts eine XML Lib bei der XPath geht (kein MSXML)?
Whookie

Software isn't released ... it is allowed to escape!
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.110 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: XPath mit ADOM v4 möglich?

  Alt 11. Sep 2014, 19:25
Auch das scheint keine Auswirkung zu haben jedenfalls nicht mit 'CfgParent' oder 'CfgParent/..'
Ja, weil der String 'CfgParent' kein XPath ist. Willst du jeden Knoten "CfgParent"? Dann ist der richtige XPath-Ausdruck dafür '//CfgParent'
Delphi-Quellcode:
   If Supports(iDoc.DOMDocument.documentElement, IDomNodeSelect, iDNodeSelect) then
   begin
     iDNL := iDNodeSelect.selectNodes('//CfgParent');

     Memo1.Lines.Add(Format('Found %d items', [iDNL.length]));

     for i:= 0 to Pred (iDNL.length) do
      memo1.Lines.Append(idnl.item[i].nodeName+' = '+idnl.item[i].childNodes.item[0].nodeValue);

    end
    Else
      Memo1.Lines.Add('Not supported!');
  end;
ergibt

Code:
Found 7 items
CfgParent = Base
CfgParent = Base
CfgParent = Base
CfgParent = Cfg_1
CfgParent = Base
CfgParent = Base
CfgParent = Base


Vorausgesetzt du entfernst den Namespace.
  Mit Zitat antworten Zitat
Whookie

Registriert seit: 3. Mai 2006
Ort: Graz
441 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: XPath mit ADOM v4 möglich?

  Alt 11. Sep 2014, 20:11
Ah, ok, danke!
Hab mich eben erst einwenig in die XPath - Syntax eingelesen und dachte "CfgParent" wird als relativer Pfad interpretiert, denn wenn ich "PropertyGroup" ohne was angebe finde ich ja alle entsprechenden Knoten.
Whookie

Software isn't released ... it is allowed to escape!
  Mit Zitat antworten Zitat
Whookie

Registriert seit: 3. Mai 2006
Ort: Graz
441 Beiträge
 
Delphi 10.3 Rio
 
#6

AW: XPath mit ADOM v4 möglich?

  Alt 12. Sep 2014, 12:35
Ich habe mich noch etwas mit dem Thema befasst und einen Editor gefunden (XML Copy Editor) der es erlaubt XPath Ausdrücke zu testen. Nun hat aber auch der das selbe Problem mit den xmlns-Attributen (XPath funktioniert nur, wenn die Einträge vorher gelöscht werden).

Das heißt aber auch, das der Editor entweder auch Delphi ADOM einsetzt oder es sich um ein generelles Problem handelt, das mit ADOM nichts zu tun hat?

Im Netz habe ich ähnlich Probleme mit Java gefunden und die Möglichkeit dort einen NamespaceContext zu setzen und in den XPath-queries den Namespace mit anzugeben?!

Das wiederum wirft die Frage auf woher man so einen Namespace nun überhaupt her bekommt (und warum er benötigt wird, wenn in der Datei selber dann ja keiner verwendet wird - keiner der Delphi-DProj - Tags verwendet etwas wie <xyz:CfgParent>..</..>)...

Der Link im xmlns - Attribut selbst ist ja auch nicht weiter verfolgbar und damit stellt sich auch die Frage was den "xyz"-vom Beispiel oben sein könnte?

Und eine XPath Query dazu müsste dann: //xyz:CfgParent heißen??
Whookie

Software isn't released ... it is allowed to escape!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:36 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