0

XPath クエリでテキスト関数を使用する方法を教えてください。xml にある Hillman Library の情報が必要でした

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

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

今のところ、[1] を使用しました。しかし、私はテキスト機能を使いたかった

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

しかし、これはうまくいきません。誰かが私がこれを行う方法を教えてください。

ありがとう

4

2 に答える 2

2

しかし、私はテキスト機能を使いたかった

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

しかし、これはうまくいきません

問題は次のとおりです。

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

は、 text-node の子の 1 つが同じ の子のLibrary1 つと等しいドキュメント内のすべての要素を選択します。libNameLibrary

参照された XML ドキュメントのLibrary要素にはlibName子がありません。これが、上記の XPath 式が何も選択しない理由です。

あなたがしたい

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

また

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

引用符またはアポストロフィを使用できます。

XPath 式では、文字列は引用符またはアポストロフィで囲むことによって指定されます。XPath はホスト言語の変数を認識しません。

于 2010-06-27T02:09:14.860 に答える
0

ああ..そのディミトレをありがとう.それはうまくいきました. あなたが言ったように、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];

私はC-objectiveが初めてで、まだ単純な概念に苦労していますenter code here

于 2010-06-27T09:58:59.930 に答える