2011-06-28 4 views
3

この質問のiOS部分は本当に重要だとは思っていませんが、ちょうどその部分を安全に追加すると思っていました。私はアプリケーションのいくつかのHTMLを解析しようとしています(クライアントはWebビューを使用する代わりにHTMLを解析したい)、別の質問から見つけたhippleコードを検索のためのXPathフォーマットとともに使用しています。私はXpathにはかなり慣れていますが、実際に使ったことはありませんが、理解し始めていますが、HTMLの一部を取得しようとしています(私は必要なものをすべて検索して見つけることができます)。ソースHTMLファイルからは、pタグに囲まれていますが、pタグ内にはhref '、em、br "などのようないくつかの他のノードも存在する可能性があります。またdivクラスの中に囲まれていて、divクラスの下にあるすべての要素をp内に引き出すことができるかどうかを確認しようとしましたが、今のところ私は必要なものを得ることができません。 HTMLはどのように見えるかの迅速なサンプル。iOSでXpathを使用してPタグ内のすべての要素を見つける

<div class='post'><p> This is some sample text that also includes a <a href="www.link.com">Sample Link</a> and also some <em>formatted</em> text.<p><p> A New line may also be present</p></div> 

は、だから私は本当に得るために必要なものをいくつかのケースでは、よりがあるかもしれないので、divのクラス内のすべての<p>のタグである。私は私の最新の試みで//div[@class='body']/p[text()]を試みたが、それはどちらもうまくいかなかったので、ポストから期間を引いただけです。

私はすべてのポストをアプリケーションで使用されるNSStringに変換したいすべてを取得した後、XPath検索フォーマットを正しく取得すると、私はかなり多くのことを行うことができます。ありがとう。

EDIT: ここでは、私が最初にXpath検索を実行してから結果を文字列に変換するために使用しているiOSのコードを示します。多分私は何か間違ったことをしているのかもしれない。

NSArray *foundPosts = [xpathParser search:@"//div[@class='post']//p//node()"]; 
TFHppleElement *postelement = [foundPosts objectAtIndex:0]; 
NSString *Posts = [postelement content]; 
+0

「// div [@ class = 'post'] // p'のような本当に簡単なXPathのようです。どうしたの? –

+0

あなたの述語は '@ class = 'body''でフィルタリングしますが、あなたが提供するソースのクラス名は' post'です。 –

+0

@lwburk申し訳ありませんが、これは単なる型だったので、私はちょうど、パースされたタグに含まれる可能性のあるものの簡単な例を挙げたいと思いました –

答えて

2

のXPath:

//div[@class='post']//p 

は、属性 "ポスト" に等しいclassを持つ任意のdivタグの下にすべての子孫pの要素を返します。

のXPath

//div[@class='post']//p//node() 

その特定divのすべての子孫pタグの下にあるすべての子孫ノード(テキストや要素)を返します。

+0

最初のXpathはピリオドを返すので、引っ張りますが、ポストを含む文字列はゼロのみを示します。 2番目のXpathは、pの前に2番目のスラッシュがないことを認識していましたが、次のノードまでの最初の文章のみを返します。たぶん私はXpathの後に文字列を作成しようとしているかもしれませんが、私が役立つかどうかを確認するために使用しているコードの一部で私の投稿を更新します。ありがとう。 –

+0

私は純粋なXPath 1.0の答えを与えました。あなたの入力サンプルが整形式でないことに注意してください。それはタイプミスですか? –

+0

私はこれがiOS側にあると思います。私はログにXpathの結果を表示してみましたが、divクラスのリスト全体が問題を引き起こしているだけであることがわかりました。私は前進するには十分だと思っています。RSSオプションのような別の解決策でクライアントと協力しなければならないかもしれません。あなたの助けをありがとう –

関連する問題