AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein XML Delphi [MSXML 4.0] - "case sensitive" bei selectSingleNode
Thema durchsuchen
Ansicht
Themen-Optionen

[MSXML 4.0] - "case sensitive" bei selectSingleNode

Ein Thema von HuxXx · begonnen am 3. Nov 2007 · letzter Beitrag vom 28. Nov 2007
Antwort Antwort
HuxXx
(Gast)

n/a Beiträge
 
#1

[MSXML 4.0] - "case sensitive" bei selectSingleNod

  Alt 3. Nov 2007, 16:46
Hallo!

Ich benutze für mein Programm das MSXML 4.0 und lese dort einzelne Nodes wie folgt aus:

Delphi-Quellcode:
 
{...} 
Nick:= 'Hux'; // Eingabe vom Benutzer.
newNode := xmlDoc.documentElement.selectSingleNode('/datenbank/user[nick="' + Nick + '"]');
  try
    // Diesen Wert auslesen und anzeigen.
    ShowMessage(newitem1.selectSingleNode('blabla').text);
  except
    // Eintrag ist nicht vorhanden.
  end;
Und hier mein Problem:
Die Variable "Nick" wird vom User eingegeben.
D.h. es kann sein, dass er ihn mal groß und mal klein eingeben kann.
Gibt es da eine Möglichkeit bei selectSingleNode den Unterschied zwischen Groß- und Kleinschreibung zu ignorieren?
Ich möchte die Daten gerne mit der Groß- und Kleinschreibung speichern, wie sie beim ersten Mal eingegeben wurden, weshalb lowercase/uppercase hier nicht in Frage kommt.

Danke schonmal für die Hilfe.

Greetz, Hux.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: [MSXML 4.0] - "case sensitive" bei selectSingl

  Alt 3. Nov 2007, 17:38
Hallo,

da hilft alles nichts: XML ist keine Benutzerschnittstelle. Du solltest eine Liste der Nicks aus deinem XML-Dokument in einer sortierten StringList führen und die Benutzereingaben damit normalisieren. XML ist nun einmal case sensitive.

Delphi-Quellcode:
function NormStr(const s: string; sl: TStrings): string;
var
  index: Integer;
begin
  index := sl.IndexOf(s);
  if index < 0
    then Result := s
    else REsult := sl[index];
end;
Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: [MSXML 4.0] - "case sensitive" bei selectSingl

  Alt 4. Nov 2007, 08:42
Lege zu jeder Node ein zweites Attribut an und nenne es lnick oder so und dort speicherst Du dann den Nick in Kleinbuchstaben. Beim Suchen wandelst Du dann die Eingabe auch in Kleinbuchstaben um und suchst im Feld lnick anstatt nick

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Neuromancer

Registriert seit: 8. Aug 2003
62 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: [MSXML 4.0] - "case sensitive" bei selectSingl

  Alt 28. Nov 2007, 17:05
Hallo,

eine andere Möglichkeit besteht darin, das XML-Dokument vor der Weiterverarbeitung durch einen XSLT-Prozessor zu jagen.

Ein simuliertes UpperCase könnte zum Beispiel so aussehen:
XML-Code:
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml"/>

<xsl:template match="*">
  <xsl:element name="{name()}">

    <xsl:for-each select="@*">
      <xsl:attribute name="{name()}">
        <xsl:value-of select="." />
      </xsl:attribute>
    </xsl:for-each>

   <xsl:choose>
     <xsl:when test="name()='nick'">
       <xsl:value-of select="translate(current(),'abcdefghijklmnopqrstuvwxyz','ABCDEFGHIJKLMNOPQRSTUVWXYZ')" />
     </xsl:when>

     <xsl:otherwise>
       <xsl:apply-templates />
     </xsl:otherwise>
   </xsl:choose>

  </xsl:element>
</xsl:template>

</xsl:stylesheet>
Wandelt innerhalb des Dokuments alle Inhalte von Knoten mit dem Namen "nick" in Großbuchstaben um. Anschließend kannst du bequem mit selectSingleNode und UpperCase arbeiten, ohne den eigentlichen Dokumentinhalt verändern zu müssen.

Gruß
  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 08:47 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