0

我想用 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());
          }
4

1 回答 1

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());
}

希望这可以帮助!

于 2013-09-25T18:56:06.747 回答