Loops 跳过前5个元素“;李",;标签

Loops 跳过前5个元素“;李",;标签,loops,jsoup,Loops,Jsoup,我在一个数据库中工作,我需要从网上检索一些信息。阅读带有Jsoup的字体代码页面,我想跳过带有“li”标记的前5个元素。我正在尝试这个,但它根本不起作用: String letra=editText.getText().toString().toUpperCase(); String url="https://en.wikipedia.org/wiki/List_of_airports_by_ICAO_code:_

我在一个数据库中工作,我需要从网上检索一些信息。阅读带有Jsoup的字体代码页面,我想跳过带有“li”标记的前5个元素。我正在尝试这个,但它根本不起作用:

                    String letra=editText.getText().toString().toUpperCase();

                    String url="https://en.wikipedia.org/wiki/List_of_airports_by_ICAO_code:_"+letra;

                    try {
                        Document doc = Jsoup.connect(url).get();
                        Elements liTags=doc.select("li");
                        int c=0;

                        for(org.jsoup.nodes.Element ligtag : liTags ){

                            if(c<5) {
                                frase =liTags.text()+" \r\n";
                                tv9.setText(" ");
                                c++;
                            }

                            else
                                frase =liTags.text()+" \r\n";
                                tv9.setText(frase);
                        }

                    } catch (IOException e) {
                        e.printStackTrace();
                    }
String letra=editText.getText().toString().toUpperCase();
字符串url=”https://en.wikipedia.org/wiki/List_of_airports_by_ICAO_code:_“+莱特拉;
试一试{
Document doc=Jsoup.connect(url.get();
元素liTags=文件选择(“li”);
int c=0;
for(org.jsoup.nodes.Element ligtag:liTags){

如果(c您在调试器中查看代码了吗?我想没有,因为其中有几个严重错误:

  • 您在
    liTags
    上循环,并且
    ligtag
    包含当前元素,但从未使用此元素

  • else块
    没有用花括号括起来,只作为
    else
    的第一个语句部分

  • tv9.setText(frase);
    行在我看来不太好。我不知道tv9是什么类型,但我猜setText方法不会将新输入连接到现有输入,而是替换tv9对象的文本值。不过,这只是一个猜测

  • 这是一个工作版本,它使用一些CSS魔法只获取相关的li标记,而不是只忽略前5个li元素:

    String letra="F";
    String url="https://en.wikipedia.org/wiki/List_of_airports_by_ICAO_code:_"+letra;
    try {
        Document doc = Jsoup.connect(url).get();
        Elements liTags = doc.select("li:has(b:matches(^"+letra+"))");
    
        for(org.jsoup.nodes.Element liTag : liTags ){
            String frase = liTag.text()+" \r\n";
            System.out.print(frase);
        }
    
    } catch (IOException e) {
        e.printStackTrace();
    }
    
    CSS选择器选择所有
    li
    标记,这些标记内部有
    b
    标记,其中包含以所需字母开头的文本

    回复评论的附录

    对于字母“A”,我得到以下输出:

    AGAF (AFT) – Afutara Airport – Afutara 
    AGAR (RNA) – Ulawa Airport – Arona, Ulawa Island 
    AGAT (ATD) – Uru Harbour Airport – Atoifi, Malaita 
    AGBA (VEV) – Barakoma Airport – Barakoma 
    AGBT (BPF) – Batuna Airport – Batuna 
    AGEV (GEF) – Geva Airport – Geva 
    AGGA (AKS) – Auki Gwaunaru'u Airport – Auki 
    AGGB (BNY) – Bellona/Anua Airport – Bellona/Anua 
    AGGC (CHY) – Choiseul Bay Airport – Choiseul Bay, Taro Island 
    AGGD (MBU) – Mbambanakira Airport – Mbambanakira 
    AGGE (BAS) – Balalae Airport – Shortland Island 
    AGGF (FRE) – Fera/Maringe Airport – Fera Island, Santa Isabel Island 
    AGGG – Honiara FIR – Honiara, Guadalcanal 
    AGGH (HIR) – Honiara International Airport (formerly Henderson Field) – Honiara, Guadalcanal 
    AGGI – Babanakira Airport – Babanakira 
    AGGJ (AVU) – Avu Avu Airport – Avu Avu 
    AGGK (IRA) – Kirakira Airport – Kirakira 
    AGGL (SCZ) – Santa Cruz/Graciosa Bay/Luova Airport – Santa Cruz/Graciosa Bay/Luova, Santa Cruz Island 
    AGGM (MUA) – Munda Airport – Munda, New Georgia Island 
    AGGN (GZO) – Nusatupe Airport – Gizo Island 
    AGGO (MNY) – Mono Airport – Mono Island 
    AGGP (PRS) – Marau Sound Airport – Marau Sound 
    AGGQ (OTV) – Ontong Java Airport – Ontong Java 
    AGGR (RNL) – Rennell/Tingoa Airport – Rennell/Tingoa, Rennell Island 
    AGGS (EGM) – Seghe Airport – Seghe 
    AGGT (NNB) – Santa Ana Airport – Santa Ana 
    AGGU (RUS) – Marau Airport – Marau 
    AGGV (VAO) – Suavanao Airport – Suavanao 
    AGGY (XYA) – Yandina Airport – Yandina 
    AGIN – Isuna Heliport – Isuna 
    AGKG (KGE) – Kaghau Airport – Kaghau Island 
    AGKU (KUE) – Kukudu Airport – Kukudu 
    AGOK (GTA) – Gatokae Aerodrome – Gatokae 
    AGRC (RIN) – Ringi Cove Airport – Ringi Cove 
    AGRM (RBV) – Ramata Airport – Ramata Island 
    ANAU – Nauru Flight Information Region 
    ANYN (INU) – Nauru International Airport – Yaren 
    AYAA (AMF) – Ama Airport – Ama 
    AYBK (BUA) – Buka Airport – Buka 
    AYCH (CMU) – Chimbu Airport – Kundiawa 
    AYDU (DAU) – Daru Airport – Daru 
    AYGA (GKA) – Goroka Airport – Goroka 
    AYGN (GUR) – Gurney Airport – Alotau 
    AYGR (PNP) – Girua Airport – Popondetta 
    AYHK (HKN) – Hoskins Airport – Kimbe 
    AYIQ (KIE) – Kieta Aropa Airport – Kieta 
    AYKA (LSA) – Losuia Airport – Kiriwina 
    AYKI (UNG) – Kiunga Airport – Kiunga 
    AYKK (KRI) – Kikori Airport – Kikori 
    AYKM (KMA) – Kerema Airport – Kerema 
    AYKT (KZF) – Kaintiba Airport – Kaintiba 
    AYKV (KVG) – Kavieng Airport – Kavieng 
    AYKY – Kunaye Airport – Kunaye 
    AYLA – Lae Airfield – Lae 
    AYMD (MAG) – Madang Airport – Madang 
    AYMH (HGU) – Mount Hagen Airport – Mount Hagen 
    AYMN (MDU) – Mendi Airport – Mendi 
    AYMO (MAS) – Momote Airport – Manus Island 
    AYMR (MXH) – Moro Airport – Moro 
    AYMS (MIS) – Misima Island Airport – Misima 
    AYNZ (LAE) – Lae Nadzab Airport – Lae / Nadzab 
    AYPY (POM) – Port Moresby/Jackson International Airport – Port Moresby 
    AYRB – Rabaul Airport (old) (destroyed 1994) – Rabaul, New Britain 
    AYTA (TIZ) – Tari Airport – Tari 
    AYTB (TBG) – Tabubil Airport – Tabubil 
    AYTK (RAB) – Rabaul Airport (Tokua Airport) – Rabaul / Tokua 
    AYVN (VAI) – Vanimo Airport – Vanimo 
    AYWD (WBM) – Wapenamanda Airport – Wapenamanda 
    AYWK (WWK) – Wewak International Airport – Wewak 
    

    AYNZ和AYPY都是列表的一部分。

    谢谢你的快速回复@luksch。顺便说一下,它只是将所有
  • 标记的最后一个元素打印给我,我想将它们全部打印出来。有什么建议吗?你复制/粘贴了我的建议吗?请注意,我将
    letra
    设置为“F”作为示例。我不明白你的意思“它只是在给我打印所有
  • 标记中的最后一个元素”。你能解释一下吗?
    Elements liTags=doc.select(“li:has(b:matches(^“+letra+”)));
    这应该检索带有
  • 标记的每个元素,在“letra”的情况下,从“letra”开始“是一个,几乎有40个元素,但它只打印了假定列表中的最后一个元素…抱歉,不明白。CSS选择器似乎对我有效。也许你应该在原始问题中明确说明你想要得到什么。
  • AYNZ
  • AYPY
  • 。AYNZ和AYPY都是不同的机场。如果我请求
    ”李:有(b:匹配(^A))“
    ,系统应同时打印AYNZ和AYPY,但它只打印AYPY。您现在明白了吗?