2013-06-07 2 views
0

Я хочу разобрать с htmlparser.I написал код для названия и его работы fine.i пробовал для следующего тега, но ничего не работает.пожалуйста, я делаю этот вид программирования в первый раз. 1) Я хочу, чтобы получить IMG SRC URL из IMG тегКак анализировать тег img и тег ul в java с помощью htmlparser?

<div id="images"> 
<img src="../images/abc.jpg" align="right" style="padding-right:5px;"> 

2) Я хочу, чтобы извлечь содержимое текста между тегами <li>.

<ul> 
    <li>hello</li> 
    <li>how r u?</li> 
    <li>bye</li> 
    </ul> 

Я пробовал использовать следующий код для извлечения img-тега src url. Но он выдает исключение nullpointer.

Parser parser=new Parser(); 
HasAttributeFilter imgfil=new HasAttributeFilter("align","right"); 
NodeList img=parser.parse(imgfil); 
Node node1=img.elementAt(0); 
ImageTag tg=(ImageTag) node1; 
String url=tg.getText(); 
System.out.println(url); 

Я пробовал следующий фрагмент тоже. Но ничего не работает.

NodeList img=parser.extractAllNodesThatMatch(new AndFilter(new TagNameFilter("img"),new HasAttributeFilter("align","right"))); 
      SimpleNodeIterator iterate=img.elements(); 
      while (iterate.hasMoreNodes()) 
      { 
      Node node1 = iterate.nextNode(); 
      ImageTag tag = (ImageTag)node1; 
      System.out.println(tag.getImageURL()); 
      } 

ответ

0

второй бит кода, который вы пробовали, будет работать, если исправлено. В первой строке есть проблема:

NodeList img=parser.extractAllNodesThatMatch(new AndFilter(new TagNameFilter("img"),new HasAttributeFilter("align","right"))); 

Я думаю, что я понимаю, как исправить проблему. Вы не используете parser.extractAllNodesThatMatch(), используйте parser.parse() и посмотрите, поможет ли это.

Вот пример того, что я имею в виду:

NodeFilter filter1 = new AndFilter(new TagNameFilter("IMG"), new HasParentFilter(new HasAttributeFilter("id", "featured_story_1"), true)); 
NodeList list = parser.parse(filter1); 

for(int i = 0; i < list.size(); i++) 
{ 
    Node node = list.elementAt(i); 
    ImageTag image = (ImageTag)node; 
    System.out.println(image.getImageURL()); 
} 

Надеется, что это помогает!