使用jsoup在字符串之前解析xml数据

时间:2015-01-20 12:14:57

标签: java android parsing xml-parsing jsoup

我需要从标签中分离出配方成分:

    for (int i=23233 ; i<100000; i= i+1000){
         url = "site adress"+ i+"/";
         try {
              document=Jsoup.connect(url).userAgent(ua).timeout(0).get();       
              writeteste(i);
              Thread.sleep(3000);       
         } catch (IOException e1) {
             // TODO Auto-generated catch block
              e1.printStackTrace();
         } catch (InterruptedException e) {
             // TODO Auto-generated catch block
             e.printStackTrace();
         }
    }

我正在使用此方法解析一个站点:

private static void writeteste(int recnum) 
{
     Elements destinys = document.getElementsByClass("recipe-tags-tastes");
     Iterator<Element> ite = destinys.select("a").iterator();       
     int ix=1;   
     while(ite.hasNext()){
     System.out.println(recnum +" ; " + ix+" ; " + ite.next().text() );
     ix++;
}

这是我正在解析的代码:

<br>
<div class="recipe-tags-tastes"> <div class="gray">     
<strong>Tastes:</strong>    
<a href="site adress">sweet</a> 
&nbsp;  </div> <div class="gray">   
<strong>Tags:</strong>      
<a href="site adress">обед</a>  
&nbsp;      <a href="site adress">ужин</a>  
&nbsp;  </div> </div>
<div class="clear">
</div> 
<br>

我拥有的输出是品味和标签在一起,我需要品尝,并在那之后标记:

我有什么: 23233; 1;甜 23233; 2;晚餐 23233; 3;晚饭

这就是我需要的:

味:

23233; 1;甜

标记:

23233; 1;晚餐

23233; 2;晚餐

我应该在jsoup查询中写什么来单独从这个代码中获取数据&#34;标签&#34;之后呢?

2 个答案:

答案 0 :(得分:0)

你应该选择基于div的&#34; grey&#34;类似

for(Element grayTag :  doc.select(".gray")) {
    System.out.println(grayTag.select("strong").text());
    int ix = 1;
    for(Element hrefs : grayTag.select("a")){
        System.out.println(recnum + "; " + ix + "; " + hrefs.text());
        ix++;
    }
}

如果recnum是23233,对于给定的html,这将打印

Tastes:
23233; 1; sweet
Tags:
23233; 1; Dinner
23233; 2; Supper

答案 1 :(得分:0)

好的,谢谢你的帮助,现在可行了:

System.out.println("taste : ");
Elements destinys = document.getElementsByClass("recipe-tags  tastes");
Element grayTag =  destinys.select(".gray").first();
// System.out.println(grayTag.select("strong").text());

 int ix = 1;
 for(Element hrefs : grayTag.select("a")){
        System.out.println(recnum + "; " + ix + "; " + hrefs.text());
        ix++;
 }

 System.out.println("tags : ");

 Element secondgrayTag =  destinys.select(".gray").last();

 int ix2 = 1;
 for(Element hrefs : secondgrayTag.select("a")){
 System.out.println(recnum + "; " + ix2 + "; " + hrefs.text());
 ix2++;}