如何使用 JSoup 以正确的顺序循环访问文本和属性的 html。
<a href="link1"> text child 1</a>
own text 1
<b> text child 2</b>
own text 2
我想对每个属性/文本进行一些处理。例如,最终输出可能如下所示: -
1) text child 1 (is a link)
2) own text 1
3) text child 2 (is bold)
4) own text 2
目前,我可以迭代子元素
Elements elements = element.children(); //gives my child 1 and 2;
for(element e: elements){
//... do processing plus extract childText...
}
或者有自己的短信,但我不知道如何两者兼顾。
String text = element.ownText(); // gives me own text 1 and 2;
另外,我不想使用(因为行信息丢失了)
String text =element.Text();
如何迭代元素,以便获得
child 1 -> text 1 -> child 2 -> text 2 (where text 1 and 2 are separated)
如果你的HTML不是很复杂,你可以使用:
for (Node node : document.body().childNodes()) {
if (node instanceof TextNode) {
System.out.println(((TextNode) node).text());
} else if (node instanceof Element) {
System.out.println(((Element) node).ownText());
}
}
如果它更复杂,您可以递归地遍历元素树:
public static void main(String[] args) {
try {
Document document = Jsoup
.parse("<a href=\"link1\"> text child 1</a>\r\n" + "own text 1\r\n" + "<b> text child 2</b>\r\n" + "own text 2");
handleElement(document.body());
} catch (Exception e) {
e.printStackTrace();
}
}
public static void handleElement(Node parent) {
if (parent instanceof TextNode) {
System.out.println(((TextNode) parent).text());
}
for (Node node : parent.childNodes()) {
handleElement(node);
}
}
这段代码打印出您所描述的内容:
int counter = 1;
for (Node node : document.body().childNodes()) {
if (node instanceof TextNode) {
System.out.println(counter++ + ") " + ((TextNode) node).text().trim());
} else if (node instanceof Element) {
Element element = (Element) node;
String suffix = "";
if ("a".equals(element.tagName())) {
suffix = " (is a link)";
} else if ("b".equals(element.tagName())) {
suffix = " (is bold)";
}
System.out.println(counter++ + ") " + element.ownText() + suffix);
}
}
1)子文本1(是一个链接)< br> 2)自己的文本1
3)子文本2(粗体)< br> 4)自己的文本2
问题内容: 我正在尝试使用Powershell访问JSON对象的特定属性值。不幸的是,我不知道结构中某些父级属性的键,因此我无法直接做到这一点。另外,由于JSON不是数组,因此无法通过索引位置访问。 上下文是我正在从elasticsearch查询正在运行的任务列表,并且需要获取任务的ID(我知道只有一个),因此我可以进行后续调用以发现其完成状态。 我已经研究了一些查询方法,但是不确定如何应用它们(
问题内容: 我有一个LinkedHashMap: 我需要从给定键的位置向后迭代。因此,如果为我提供了第十个项目的密钥,则需要向后迭代哈希表9、8、7等。 问题答案: 您不必遍历它。但是拔下钥匙并将其存储在列表中会很方便。这就是执行indexOf()类型操作的唯一方法。
问题内容: 我有这样的html结构。我想获取没有类或ID的第二张表。我如何从中获得第二张桌子? 我正在尝试这样 谁能帮我? 问题答案: 您想遍历元素吗?最好从像 您只能这样做。
我面临下一个问题。我有一个.txt文件,它包含的数据格式如下: “name”=“value” 并以这段代码为例,尝试用JSR223采样器或Beanshell采样器将其转换为hashmap。然后,我想将一些值从映射到属性,以便在下一个带有请求的线程中使用: 但不管用。当我想看看道具包含什么的时候--实际结果是这样的: 预期结果应为: 所以我没有任何名为${schStart}的变量,不明白JMeter
本文向大家介绍vue使用v-for遍历对象时,是按什么顺序遍历的?如何保证顺序?相关面试题,主要包含被问及vue使用v-for遍历对象时,是按什么顺序遍历的?如何保证顺序?时的应答技巧和注意事项,需要的朋友参考一下 1、会先判断是否有iterator接口,如果有循环执行next()方法 2、没有iterator的情况下,会调用Object.keys()方法,在不同浏览器中,JS引擎不能保证输出顺序
二叉树的预序遍历是{8,5,9,7,1,12,4,11,3},其顺序是{9,5,1,7,12,8,4,3,11}。用它构造二叉树并执行级别顺序遍历。最后构造一个二叉搜索树(BST),从左到右依次获取在上述级别顺序遍历中出现的键值。这个BST的级别顺序遍历是什么?