[英]Parse HTMl using JSOUP - Need specific pattern
我正在嘗試獲取標簽之間的文本並保存到某個變量中,例如:這里我想保存em
標簽之間的值return
。 我還需要p
標簽中文本的 rest, em
標簽值分配有return
, p
標簽值應該只返回 --> 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.