如何使用java解析html列表值

时间:2012-10-09 13:19:29

标签: java html parsing

我只想解析html文件中的两个值。

enter image description here

html文件中会有几个列表元素,我想解析两个值

一个。 1,100,101 湾Swargate到Shivajinagar Circle路线,Mnapa bhavan到..,Kothrud仓库到......

我使用下面的代码来解析它,但我没有得到所需的值,这里我只得到href值。

请给我任何解决上述问题的方法

   String html =

   "<li/><a href=r361.html>1</a> Swargate to Shivajinagar Circle route"+
  " <li/><a href=r511.html>100</a> Manpa bhavan to Hinjewadi phase 3"+
   "<li/><a href=r572.html>101</a> Kothrud depot to Kondhava Bu";

   Reader reader = new StringReader(html);
   HTMLEditorKit.Parser parser = new ParserDelegator();
   final List<String> links = new ArrayList<String>();

   parser.parse(reader, new HTMLEditorKit.ParserCallback(){
       public void handleStartTag(HTML.Tag t, MutableAttributeSet a, int pos) {
           if(t == HTML.Tag.A) {
               Object link = a.getAttribute(HTML.Attribute.HREF);
               if(link != null) {
                   links.add(String.valueOf(link));
               }
           }
       }
   }, true);

   reader.close();
   System.out.println(links);

}

更新

现在我使用下面的代码(使用JSOUP Lib)获得href的值

AssetManager assetManager = getAssets();  InputStream ims = assetManager.open(“index.html”);  文档doc = Jsoup.parse(ims,“UTF-8”,“btc.com”);  元素busNum = doc.getElementsByTag(“a”);  pTagString = busNum.html();

Log.i(“hh”,“onPostExecute =”+ PTagString);

现在我希望将价值排除在外,例如:Swargate to shivajinagar circle route。

任何人都知道方法或任何想法

1 个答案:

答案 0 :(得分:0)

您甚至不需要使用解析。你可以使用正则表达式。

请参阅this Tutorial about regex in Java

然后你需要这样的东西:

<a[^>]*>([^<]*)<[^>]*>(.*)

作为你的正则表达式。然后,您将立即拥有所需的两个值。它比解析html更有效。