簡體   English   中英

使用 JSOUP 解析 HTMl - 需要特定模式

[英]Parse HTMl using JSOUP - Need specific pattern

我正在嘗試獲取標簽之間的文本並保存到某個變量中,例如:這里我想保存em標簽之間的值return 我還需要p標簽中文本的 rest, em標簽值分配有returnp標簽值應該只返回 --> an item, cancel an order, print a receipt, track your purchases or reorder items. 如果某個值在em標簽之前,即使該值也應該在不同的變量中,基本上是一個p ,如果它有多個標簽,那么它應該被拆分並保存到不同的變量中。 如果我知道如何獲得不在內部標簽中的文本的 rest,我可以檢索 rest。

我在下面寫了:下面只返回“em”標簽中的“return”。這里ep基本上是doc.select(p) ,選擇p標簽然后迭代,不確定我是否做對了,任何其他方法受到高度贊賞。

String text ="\<p><em>return </em>an item, cancel an order, print a receipt, track your purchases or reorder items.</p>"

Elements italic_tags = ep.select("em");
for(Element em:italic_tags) { 
 if(em.tagName().equals("em")) {
    System.out.println( em.select("em").text());
   }
}

如果您需要 select 每個子文本和由不同標簽包圍的文本,您需要嘗試選擇Node而不是Element 我修改了您的 HTML 以包含更多標簽,因此示例更完整:

        String text = "<p><em>return </em>an item, <em>cancel</em> an order, <em>print</em> a receipt, <em>track</em> your purchases or reorder items.</p>";
        Document doc = Jsoup.parse(text);

        Element ep = doc.selectFirst("p");
        List<Node> childNodes = ep.childNodes();
        for (Node node : childNodes) {
            if (node instanceof TextNode) {
                // if it's a text, just display it
                System.out.println(node);
            } else {
                // if it's another element, then display its first
                // child which in this case is a text
                System.out.println(node.childNode(0));
            }
        }

output:

return 
an item, 
cancel
 an order, 
print
 a receipt, 
track
 your purchases or reorder items.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM