![]() |
XPath mit ADOM v4 möglich?
Liste der Anhänge anzeigen (Anzahl: 1)
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. |
AW: XPath mit ADOM v4 möglich?
Das liegt doch am Namespace, oder?
Lösch testweise mal das xmlns="http://..." im obersten Knoten und wundere dich. ![]() |
AW: XPath mit ADOM v4 möglich?
Zitat:
Zitat:
Zudem gibts ja weder IXMLDOMNodeList und IXMLDOMDocument2 im adomxmldom. Bleibt die abschließende Frage: Gibts eine XML Lib bei der XPath geht (kein MSXML)? |
AW: XPath mit ADOM v4 möglich?
Zitat:
Delphi-Quellcode:
kein XPath ist. Willst du jeden Knoten "CfgParent"? Dann ist der richtige XPath-Ausdruck dafür
'CfgParent'
Delphi-Quellcode:
'//CfgParent'
Delphi-Quellcode:
ergibt
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;
Code:
Found 7 items
CfgParent = Base CfgParent = Base CfgParent = Base CfgParent = Cfg_1 CfgParent = Base CfgParent = Base CfgParent = Base Vorausgesetzt du entfernst den Namespace. |
AW: XPath mit ADOM v4 möglich?
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. |
AW: XPath mit ADOM v4 möglich?
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?? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:40 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