【问题标题】:iphone ,how to get this label?iphone,如何获得这个标签?
【发布时间】:2011-08-29 13:58:20
【问题描述】:
<div>
  <p>
    <a href="#" class="transcriptLink" onclick="seekVideo(0); return false;">A few years ago,</a>
    <a href="#" class="transcriptLink" onclick="seekVideo(2000); return false;">I felt like I was stuck in a rut,</a>
    <a href="#" class="transcriptLink" onclick="seekVideo(5000); return false;">so I decided to follow in the footsteps</a>
    <a href="#" class="transcriptLink" onclick="seekVideo(7000); return false;">of the great American philosopher, Morgan Spurlock,</a>
    <a href="#" class="transcriptLink" onclick="seekVideo(10000); return false;">and try something new for 30 days.</a>
  </p>
</div>

这是网页代码的一部分。

我想知道如何获取 label 中的文本。如:“几年前”

我可以在"&lt;a&gt; text &lt;/a&gt;", 中获取文本

但我不知道如何在"&lt;a href="#" class="transcriptLink" onclick="seekVideo(0); return false;"&gt;A few years ago,&lt;/a&gt; " 标签中获得“几年前”

<a href="#" class="transcriptLink" onclick="seekVideo(0); return false;">  
<a href="#" class="transcriptLink" onclick="seekVideo(2000); return false;">
....................

只有onclick="seekVideo(....);不同

/div/p/a[substring-before(substring-after(@onclick, '('), ')') = '0']/text()

可以得到"A few years ago";之类的文字

但现在我想获取seekVideo(number)中的号码????

/div/p/a[number(substring-before(substring-after(@onclick, '('), ')'))]

不对!!!

例如:&lt;a href="#" class="transcriptLink" onclick="seekVideo(2000); return false;"&gt;

我想得到“2000”,怎么办?

示例项目或代码更好,谢谢

【问题讨论】:

标签: iphone xml


【解决方案1】:

如果它是有效的 XML(从您向我们展示的示例中它是有效的 XML),您可以使用 NSXMLParser 进行解析。

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
    if(!currentString){
        currentString = [[NSMutableString alloc] init];
    }
    [currentString appendString:string];    
}

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {
    if([elementName isEqualToString:@"a"]){
        NSLog(@"Text betweeen \"a\" tag %@",currentString);
    }
    [currentString release],currentString =nil;
}

要从 seekVideo(0) 中获取 0,请使用

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict{
    if([elementName isEqualToString:@"a"]){
        NSString* onClickAttribString = [attributeDict objectForKey:@"onclick"];
        NSLog(@"OnClick Attrib: %@",onClickAttribString);
        // seekVideo(0); return false; 
        NSArray* arrayList = [onClickAttribString componentsSeparatedByString:@" "]; // gives array of string seperated by space
        NSLog(@"seekvideo %@",[arrayList objectAtIndex:0]);
        //Process seekvideo(0); to get number... use NSScanner
        NSString* seekVideoString = [arrayList objectAtIndex:0];
        NSString* numberString = [seekVideoString stringByTrimmingCharactersInSet:[[NSCharacterSet decimalDigitCharacterSet] invertedSet]];
        NSLog(@"Number : %@",numberString);
        // if you want numberString converted to integer then [numberString intValue]
    }
}

【讨论】:

  • stackoverflow.com/questions/6723244/…web ,你能用和Kirill Polishchuk一样的代码框架给我答案吗?
  • 你说你试过 "/div/p/a[number(substring-before(substring-after(@onclick, '('), ')'))]" 那给你什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多