1

我正在使用 Jericho java 客户端库来解析所有 href 链接。我想要做的是过滤掉或跳过源中包含特定 id 的所有链接。我尝试了几件事,但我的解决方案并不漂亮,但基本上我可以通过检查以下内容来完成此操作:

for(Element element : elements) {
  if (element.getAllStartTags().toString().contains("skip_me")) {
    // do something
  }
}

但我更喜欢更清洁的解决方案。让我们假设这是来源:

<td>
 <a href="http://www.yahoo.com" id="skip_me" />
</td>
<td>
 <a href="http://www.google.com" />
</td>

只是一个小片段,但我希望它最终返回给我的只是“www.google.com”。我将不胜感激。谢谢。

4

2 回答 2

1
Another solution:       

List<Element> elements = source.getAllElements("a");        
for(Element element : elements )
     {
      final String id = element.getAttributeValue("id");
      if(id == null || !id.equals("skip_me")) 
         {
          System.out.println(element.toString());    
         }
     }

输出:

<a href="http://www.google.com" />  
于 2013-12-30T23:27:11.723 回答
1

这是另一个解决方案:

for( Element element : elements )
{
    if( element.getStartTag().getName() == HTMLElementName.A ) // Select only 'a'-tags
    {
        final String id = element.getAttributeValue("id"); // Get Attribute 'id'

        if( id == null || !id.equals("skip_me") ) // Process element if it has a.) no id (null) or b.) the id is not 'skip_me'
        {
            System.out.println(element); // Process Element
        }
    }
}

输出:(
使用您的html)

<a href="http://www.google.com" />
于 2013-02-03T17:23:32.100 回答