2010-12-16 2 views
2

XmlDocument에서 문자열 비교를 수행하려고하는데 다음과 같은 결과가 나타납니다. 첫 번째 2가 올바른 결과를 얻는 이유와 마지막 2가 결과를 반환하지 않는 이유가 궁금합니다.XmlDocument에서 문자열의 더 큰 값, 더 작은 값 및 같음 비교

내가 시도한 것은 datetime 문자열을 기반으로 노드를 필터링하는 것입니다. 마지막 예처럼.

덕분에, XPath는 1.0에서

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

이것은 xpath 문제입니다. 어쨌든 Mariana처럼 기본 XML 파일을 확인해야합니다. –

답변

5

은 평등 비교 아닌 비교 연산자는 숫자 만 작동합니다. 이것은 XML에서 UNICODE를 다루기 때문입니다. 따라서 문자열을 완전한 정렬 된 데이터 형식으로 만들려면 XPath 2.0에 추가 된 데이터 정렬 개념이 필요합니다.

첫 번째 표현식은 옳았습니다. 왜 두 번째 작품? "greater than"연산자는 두 인수를 모두 number() 함수와 함께 전달하기 때문에 작동합니다. 노드 세트 노드 세트를 포함하지 않는 비교의 관점에서 정의 포함 http://www.w3.org/TR/xpath/#booleans

첫째, 비교에서

; =,! =, < =, <,> = 및>에 대해 균등하게 정의 됨 .

노드 세트의 existencial 비교를 기술 한 후에

(비교를 느릅 나무에 설정된 노드의 노드가있는 경우의 비교 만에 해당하는 참이다)

어느 객체가 비교 될 때 노드 집합이 하고 작업자는 IEEE 754

,745 에 따른 숫자 에 오브젝트를 모두 변환 숫자를 비교하여 <=, <, >= 또는 >가 다음 객체를 비교이며
+0

정답은 +1입니다. –