touchxmlを使用してRSSフィードを解析する、タグは見つかりません
-
25-09-2019 - |
質問
特定の質問のスタックオーバーフローRSSフィードを解析しようとしています。https://stackoverflow.com/feeds/question/2110875
このためには、TouchXMLライブラリを使用しています。次のコードには問題があるようです。
CXMLDocument *parser = [[CXMLDocument alloc] initWithData:sourceData options:0 error:nil];
NSArray *allEntries = [parser nodesForXPath:@"//entry" error:nil];
NSLog(@"Found entries: %d",[allEntries count]); //Returns 0
NSLOGステートメントは、フィード内のすべてのエントリのカウントを返す必要があります。この場合、「3」である必要があります。問題は0を返すことです。
このコードが機能していることがわかりました。
CXMLDocument *preParser = [[CXMLDocument alloc] initWithData:sourceData options:0 error:nil];
NSString *sourceStringUTF8 = [preParser XMLString];
[preParser release];
CXMLDocument *parser = [[CXMLDocument alloc] initWithData:[sourceStringUTF8 dataUsingEncoding:NSUTF8StringEncoding] options:0 error:nil];
NSArray *allEntries = [parser nodesForXPath:@"//entry" error:nil];
NSLog(@"Found entries: %d",[allEntries count]); //Returns 3, which is ok
しかし、これを使用すると(おそらくそうである)、他のいくつかの散発的なバグを紹介します。
私が知る限り、XPathの表現は正しいです。使用してチェックしました これ ページも。
誰もがこの問題で私を助けたり、正しい方向に私を向けたりできますか。
ありがとう。
解決
非常に似た問題がありました。これは、XMLネームスペースと関係があり、TouchXMLはあまりサポートされていません(既知の問題)。
私はあなたのハックで、名前空間が2番目のパーサーに渡されなかったので、それが機能する理由だと思います。
より簡単な方法は、ただ変えることです
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
単純に置き換えられました
<html>
そして、Xpathは今機能しています。
他のヒント
たぶん実際にそれを使用することから始めます error
への議論 nodesForXPath:error
エラーが返されるかどうかを確認しますか?かどうかを確認してください allEntries
ではありません nil
その電話をかけた後?
所属していません StackOverflow