4

私は現在、Hpple を使用して HTML を解析しています。

TFHpple *htmlParser = [TFHpple hppleWithHTMLData:[currentString dataUsingEncoding:NSUTF8StringEncoding]];
NSString *paragraphsXpathQuery = @"//p//text()";
        NSArray *paragraphNodes = [htmlParser searchWithXPathQuery:paragraphsXpathQuery];
        if ([paragraphNodes count] > 0) {
            NSMutableArray *tempArray = [NSMutableArray array];
            for (TFHppleElement *element in paragraphNodes) {
                [tempArray addObject:[element content]];
            }
            article.paragraphs = tempArray;
        }

このようにして段落の配列を取得し、これを使用NSString *result = [myArray componentsJoinedByString:@"\n\n"];して、改行を含む 1 つのテキスト本文にコンパイルできます。

ただし、html にタグが含まれている場合、それらは個々のエンティティとして解釈され、それ自体で改行されるため、1 日の終わりに次のような行から:

<p>I went to the <a href="blablabla.html">shop</a> to get some milk!</a></p>
<p>It was awesome.</p>

私はこれを得る:

I went to the

shop

to get some milk!

It was awesome!

もちろん、これを取得したいと思います(タグ内の他のタグは無視してpください):

I went to the shop to get some milk!

It was awesome!

あなたは私を助けることができます?

4

2 に答える 2

2
NSString *HTMLTags = @"<[^>]*>"; //regex to remove any html tag

NSString *htmlString = @"<html>bla bla</html>";
NSString *stringWithoutHTML = [hstmString stringByReplacingOccurrencesOfRegex:myregex withString:@""];

これをコードに含めることを忘れないでください: #import "RegexKitLite.h" この API をダウンロードするためのリンクは次のとおりです: http://regexkit.sourceforge.net/#Downloads

于 2012-09-14T13:48:22.433 に答える
2

XPath 1.0 では、次の 2 つの手順でこれを行うことができます

  1. すべてのp要素を選択://p

  2. 選択された各p要素 (初期コンテキスト ノードとして使用される) で、これを評価します。string()

説明:

定義上、標準の XPath 関数string()を要素に適用した結果は、そのすべてのテキスト ノードの子孫を (ドキュメント順に) 連結したものになります。

于 2012-09-14T13:23:04.983 に答える