如何使用htmlparser解析java中的img标签和ul标签?

时间:2013-06-07 05:15:10

标签: java html html-parsing html-parser

我想用htmlparser解析以下内容。我为标题编写代码并且工作正常。我尝试了以下标记,但没有任何工作。请帮助我第一次进行这种编程。 1) 我想从img标签

中检索img src url
<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());
          }

1 个答案:

答案 0 :(得分: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());
}

希望这有帮助!