2010-06-27 1 views
0

XPath 쿼리에서 텍스트 함수를 사용하는 방법을 알려주십시오. 지금의 XML특정 요소 값을 가진 노드를 얻는 방법

http://www.sis.pitt.edu/~arazeez/Librarydata.xml

resultNodes = [rssParser nodesForXPath:@"//Library[1]/Hours/TermOrHolidays" error:nil];. 

힐만 라이브러리에 존재하는 정보를 필요 I 사용되는 [1]. 하지만 텍스트 기능을 사용하고 싶습니다.

NSString *libName = @"Hillman Library"; 
resultNodes = [rssParser nodesForXPath:@"//Library[LibraryName/text() = libName]/Hours/TermOrHolidays" error:nil]; 

그러나 이것은 효과가 없습니다. 어떤 사람이 나에게 어떻게하면 가 이런 일을하는지 알 수 있습니까? 그중 하나 같다

//Library[LibraryName/text() = libName]/Hours/TermOrHolidays

문서 텍스트 노드의 자식 중 하나에 모든 Library 요소를 선택 :

감사

+0

안녕, 압둘와 C-목적 여전히 어려움을 겪고 새로운 오전. 에 오신 것을 환영합니다. 코드를 강조 표시하고 ctrl-k를 눌러 제대로 포맷하십시오. – bernie

답변

2

But I wanted to use the text function

NSString *libName = @"Hillman Library"; 
resultNodes = [rssParser nodesForXPath:@"//Library[LibraryName/text() = libName]/Hours/TermOrHolidays" error:nil]; 

But this is not working out

문제이다 libName 그 아이가 같은 Library입니다.

참조 된 XML 문서의 Library 요소에 libName 자식이 없으므로 위의 XPath 표현식은 아무 것도 선택하지 않는 이유입니다.

당신은를 원하는 :

//Library[LibraryName/text() = 'Hillman Library']/Hours/TermOrHolidays

또는

//Library[LibraryName/text() = "Hillman Library"]/Hours/TermOrHolidays

어느 따옴표 또는 아포스트로피를 사용할 수 있습니다.

XPath 식에서는 문자열을 따옴표 나 아포스트로피로 묶어 지정합니다. XPath는 호스팅 언어의 변수를 이해하지 못합니다.

0

아 ... 그 Dimitre에 대한 감사 ... 그것은 효과가있었습니다. XPath가 호스팅 언어의 변수를 이해하지 못한다고 말했던 것 같습니다. 그렇다면 XPath 쿼리를 연결하여 양식을 만들어 사용할 수 있습니다.

NSString *libName = @"Engineering Library"; 
    NSMutableString *xpathquery = [[NSMutableString alloc] init]; 
    [xpathquery appendString:@"//Library[LibraryName/text() = '"]; 
    [xpathquery appendString:libName]; 
    [xpathquery appendString:@"']/../Hours/TermOrHolidays"]; 
    resultNodes = [rssParser nodesForXPath:xpathquery error:nil]; 

나는 간단한 개념 enter code here

+0

나는 이것을 헛되이 사용해 보았습니다. 오류가 발생했습니다. NSString * string1 = @ "// LibraryName [text() = '"; \t NSString * string2 = @ " ']/../ 시간/TermOrHolidays "; \t는 NSString * newstring 인수로 쓰여진; \t는 NSString * newString1; \t newstring 인수로 쓰여진 = 문자열 1의 stringByAppendingString : LIBNAME] \t newString1 = newstring 인수로 쓰여진 stringByAppendingString : 문자열 2] \t NSLog (newString1) \t// 아래에 하나를 수정하십시오 \t // resultNodes = [rssParser nodesForXPath : @ "// LibraryName [text() = '엔지니어링 라이브러리']/시간/TermOrHolidays"오류 : 없음]; resultNodes = [rssParser nodeForXPath : newString1 오류 : 없음]; –