0

htmlparser を使用して以下を解析したいと思います。タイトルのコードを書き、正常に動作しました。次のタグを試しましたが、何も機能していません。この種のプログラミングを初めて行っているのを助けてください。1) img タグから img src url を取得したい

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

<li>2)タグ間のテキスト コンテンツを取得したい。

<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

試した 2 番目のコードは、修正すれば機能します。最初の行には問題があります:

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 に答える