2010-12-16 8 views
2

Ich versuche, einen String Vergleich in einem XmlDocument zu tun, und das Folgende ist, was ich ausprobiert habe. Ich frage mich, warum die ersten 2 das richtige Ergebnis liefern und die letzten 2 kein Ergebnis liefern.String größer, weniger und gleich Vergleich in XmlDocument

Was ich versuchte zu tun, ist Knoten auf einer Datetime-Zeichenfolge herauszufiltern. Wie das letzte Beispiel, das ich habe.

Dank,

XmlNodeList test = x2PathDoc.SelectNodes("//config 
              /pendingversion 
               [@versionconfigid > 1002002]"); 

XmlNodeList test2 = x2PathDoc.SelectNodes("//config 
              /pendingversion 
               [@versionconfigid >'1002002']"); 

XmlNodeList test3 = x2PathDoc.SelectNodes("//config 
              /pendingversion[@test > 'b']"); 

XmlNodeList test4 = x2PathDoc.SelectNodes("//config 
              /pendingversion 
               [@deploydatetime > 
               '2010-12-19T03:25:00-08:00']"); 
+0

Das ist XPath Problem, wie Mariana sowieso gefragt, wir müssen die zugrunde liegende XML-Datei sehen. –

Antwort

5

In XPath 1.0, Vergleichsoperator andere als Gleichheitsvergleich funktioniert, nur für Zahlen. Dies liegt daran, dass Sie in XML mit UNICODE arbeiten. Um einen vollständigen geordneten Datentyp zu erhalten, müssen Sie die in XPath 2.0 hinzugefügten Sortierfolgen verwenden.

Der erste Ausdruck ist offensichtlich richtig. Warum funktioniert das zweite? Weil der Operator "größer als" beide Argumente mit der Funktion number() ausgibt.

Von http://www.w3.org/TR/xpath/#booleans

Zuerst Vergleiche, die Knoten-Sets beinhalten in Bezug auf Vergleiche definiert sind, die Knotenmengen nicht einzubeziehen; dies ist einheitlich definiert für =,! =, < =, <,> = und>.

und nach dem existencial Vergleich für Knoten-Sets beschreiben (ein Vergleich wahr ist, nur dann, wenn es ein Knoten in dem für den den jeweiligen Vergleichssatz Knotet wahr ist):

Wenn weder Objekt verglichen werden ist ein Knotenmenge und der Bediener ist <=, <, >= oder >, dann werden die Objekte verglichen, indem beide Objekte Zahlen Umwandlung und die Zahlen zu vergleichen gemäß IEEE 754

+0

+1 für die richtige Antwort –

Verwandte Themen