3

Hpple と xpath を使用して HTML の u リストからすべての画像を取得しようとしていますが、メリットはありません

これらのような私のHTMLノード

<ul id="week_slider">
      <div id="week_program_img">
            <img id="Img1" src="imageurl">    
      </div>
</ul>

しかし、(img)タグが(a)タグの中にあることもあります

<a href="url">
       <img id="Img1" src="imageurl"> 
</a>

このパスをxpathに入れると、(「a」タグではない)画像のみを取得できます

//ul[@id='week_slider']//div[@id='week_program_img']

また、このパスをxpathに入れると、画像(「a」タグ内)を取得できます

//ul[@id='week_slider']//div[@id='week_program_img']/a

しかし、タグの有無にかかわらず、すべての画像を同時に取得したいのですが、同じxpathでこれを行うにはどうすればよいですか? このような (or) 、 (|) 、 (and) 演算子を使用してみます

//ul[@id='week_slider']//div[@id='week_program_img'] | //ul[@id='week_slider']//div[@id='week_program_img']/a 

しかし、うまく機能していません

私の完全なコード:

NSString *tutorialsXpathQueryStringimage1 = @"//ul[@id='week_slider']//div[@id='week_program_img']";

NSArray *newsNodesimage1 = [newsParser searchWithXPathQuery:tutorialsXpathQueryStringimage1];




NSMutableArray *image1 = [[NSMutableArray alloc] initWithCapacity:0];
for (TFHppleElement *element in newsNodesimage1) {



    Tutorial *tutorial = [[Tutorial alloc] init];
    [image1 addObject:tutorial];

    for (TFHppleElement *child in element.children) {
        if ([child.tagName isEqualToString:@"img"]) {

            tutorial.imageUrl = [child objectForKey:@"src"];
        }
    }


}
4

2 に答える 2

3

使用:

//ul[@id='week_slider']//div[@id='week_program_img']//img

または、そのようなすべての画像の親を選択したい場合は、提供された XPath 式に基づいているようです。

//ul[@id='week_slider']//div[@id='week_program_img']/descendant-or-self::*[img]
于 2013-03-26T02:15:27.060 に答える