【问题标题】:Parsing HTML with Jsoup使用 Jsoup 解析 HTML
【发布时间】:2013-05-14 13:44:28
【问题描述】:

我正在尝试进行一些解析,但我被卡住了...... 这是 HTML 的结构:

<ul class="sub-menu"> 
<li id="1" class="1"><a href="http://link">SOME TEXT</a> 
    <ul class="sub-menu"> 
        <li .... ><a ... /></li>
        <li .... ><a ... /></li>
        <li .... ><a ... /></li>
    </ul>
</li>
<li id="2" class="2"><a href="http://link2">SOME OTHER TEXT</a> 
    <ul class="sub-menu"> 
        <li .... ><a ... /></li>
        <li .... ><a ... /></li>
        <li .... ><a ... /></li>
    </ul>
</li></ul>

我需要获取每个 li(id = 1、2 和 s),然后将 lis 放入其中(&lt;li .... &gt;&lt;a ... /&gt;&lt;/li&gt;)。

这是我的 Java 的外观:

// ul contains the source above
Elements lis = ul.select("li"); // I know that this line screws up everything here, but I can't figure out how to do it correctly
for(Element li: lis)
{
    String text = li.select("a").first().text();
    Elements lis2 = li.select("ul[class=sub-menu]").first().getElementsByTag("li");     
    for(Element li2: lis2)
    {
        Element a = li2.select("a").first();
        // and other stuff with 'a'
    }
}

那么谁能帮我解决这个问题?

编辑: 问题是ul.select("li"); 会返回我在这里写的源代码中的每一个“li”。我需要获取 id 为 1、2 等的 lis。然后我需要得到那些&lt;li .... &gt;&lt;a ... /&gt;&lt;/li&gt;。 附:对不起我的英语不好。

【问题讨论】:

  • 你的问题在哪里?
  • 我更新了我的问题。

标签: java jsoup


【解决方案1】:

我不确定,但试试这样的方法

for( Element element : doc.select("[li]") )
{
    if( element.attr("id")== 1 || element.attr("id").getValue()== 2 )
    {
        // thats your elements 'element'
        System.out.println(element);
    }
}

问候, 雨果·佩德罗萨

【讨论】:

  • 不,这个解决方案不适合我。 ID可以随时更改,并且有2个以上的lis。但另一方面,在我想出其他办法之前,它可以作为临时解决方案。
【解决方案2】:

你试过了吗

`ul.children()`

我认为它只会返回ul 的直接子节点。

【讨论】:

    【解决方案3】:

    使用JSoup内置的比较方法,如等

    您可以通过包含一个伪选择器来选择元素,该选择器将查看 DOM 结构中相对于其父级的相对位置:

    Elements lis = ul.select("li:lt(2)");

    这应该只返回 li 的 0 和 1。

    请参阅 JSoup 文档中的伪选择器,它比我能更好地解释这一点!

    http://jsoup.org/cookbook/extracting-data/selector-syntax

    【讨论】:

      猜你喜欢
      • 2012-11-06
      • 1970-01-01
      • 1970-01-01
      • 2011-12-11
      • 1970-01-01
      • 1970-01-01
      • 2014-01-01
      • 2019-10-10
      • 2016-01-16
      相关资源
      最近更新 更多