AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein XML Delphi Wie die Upper-case Funktion in XPath Suche verwenden?

Wie die Upper-case Funktion in XPath Suche verwenden?

Ein Thema von Boro · begonnen am 14. Jan 2010 · letzter Beitrag vom 15. Jan 2010
 
Boro

Registriert seit: 2. Mai 2006
23 Beiträge
 
#1

Wie die Upper-case Funktion in XPath Suche verwenden?

  Alt 14. Jan 2010, 17:11
Hi,

ich brauche die Suche nach Element mit bestimmten Wert case-insensitive machen. Z.B. in books.xml Datei
Delphi-Quellcode:
<bookstore>
  <book>
    <title>Hobbit</title>
    <author>J.R.R.Tolkien</author>
    <published>2001-08-05</published>
    <price>5.71</price>
  </book>
  <book>
    <title>Narnia</title>
    <author>C.S.Lewis</author>
    <published>2002-03-21</published>
    <price>4.52</price>
  </book>
</bookstore>
brauche ich Element <book> mit dem SubKnoten <title> dessen Inhalt ist der Text 'Narnia' finden. Weil der Inhalt auch in klein oder alle in gross Buchstaben sein kann, währe eine Uppercase funktion behilflich.
In der w3schools XPath Tutorial steht unter den Funktionen auch upper-case. Ich versuchte es mit dem Code
Delphi-Quellcode:
var
  IDoc: IXMLDocument;
  INode: IXMLNode;
begin
  IDoc := LoadXMLDocument('.\books.xml');
  INode := SelectNode(IDoc.DocumentElement,'/bookstore/book[price<5]/title'); // diese Suche funkzioniert
  INode := SelectNode(IDoc.DocumentElement,'/bookstore/book[upper-case(title)=NARNIA]'); // diese hat Fehler
end;
Leider gibt der zweite Aufruf des SelectNode() eine "Exception class EOleException with 'message Unknown method. /bookstore/book[-->upper-case(title)<--=NARNIA]'.
Weist jemand was soll ich machen um die Funktion 'upper-case' bekannt machen?

Ich verwende Delphi2006 unter winXPSP3 und MSXML DomVendor.
Die Funktion SelectNode kommt aus einem Beitrag vom Midiar zum OpenXML. Die sieht so aus
Delphi-Quellcode:
function selectNode(xnRoot: IXmlNode; const nodePath: WideString): IXmlNode;
var
  intfSelect : IDomNodeSelect;
  dnResult : IDomNode;
  intfDocAccess : IXmlDocumentAccess;
  doc: TXmlDocument;
begin
  Result := nil;
  if not Assigned(xnRoot)
    or not Supports(xnRoot.DOMNode, IDomNodeSelect, intfSelect) then
    Exit;

  dnResult := intfSelect.selectNode(nodePath);
  if Assigned(dnResult) then
  begin
    if Supports(xnRoot.OwnerDocument, IXmlDocumentAccess, intfDocAccess) then
      doc := intfDocAccess.DocumentObject
    else
      doc := nil;
    Result := TXmlNode.Create(dnResult, nil, doc);
  end;
end;
Wie kann man zu der XPath Funktion upper-case kommen? Soll ich vieleicht die Type Library importieren von neueren Version der MSXML? Ich hab sie bis jetzt nicht importiert und weis eigentlich nicht welche Version ich verwende. Ich denke das es die default 4.0 Version ist. Ich mache zwar die winXP updates regelmasig aber verwnede nicht den MSOffice und IE. Kann mir jemand einen Tip geben wie die upper-case Funktion verwenden konnen?

Boro
  Mit Zitat antworten Zitat
 

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 22:58 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-2025 by Thomas Breitkreuz