Java 如何在jsoup中获取元素的第一级子元素
在jsoupJava 如何在jsoup中获取元素的第一级子元素,java,jsoup,Java,Jsoup,在jsoupElement.children()中,返回元素的所有子元素(子元素)。但是,我需要元素的第一级子元素(直接子元素) 我可以用哪种方法 您可以始终将ELEMENT.child(index)与索引一起使用,您可以选择所需的子元素。ELEMENT.children()仅返回直接子元素。因为你把他们绑在树上,他们也有孩子 如果需要没有底层树结构的直接子元素,则需要按如下方式创建它们 public static void main(String... args) { Documen
Element.children()
中,返回元素的所有子元素(子元素)。但是,我需要元素的第一级子元素(直接子元素)
我可以用哪种方法 您可以始终将ELEMENT.child(index)与索引一起使用,您可以选择所需的子元素。ELEMENT.children()仅返回直接子元素。因为你把他们绑在树上,他们也有孩子 如果需要没有底层树结构的直接子元素,则需要按如下方式创建它们
public static void main(String... args) {
Document document = Jsoup
.parse("<div><ul><li>11</li><li>22</li></ul><p>ppp<span>sp</span</p></div>");
Element div = document.select("div").first();
Elements divChildren = div.children();
Elements detachedDivChildren = new Elements();
for (Element elem : divChildren) {
Element detachedChild = new Element(Tag.valueOf(elem.tagName()),
elem.baseUri(), elem.attributes().clone());
detachedDivChildren.add(detachedChild);
}
System.out.println(divChildren.size());
for (Element elem : divChildren) {
System.out.println(elem.tagName());
}
System.out.println("\ndivChildren content: \n" + divChildren);
System.out.println("\ndetachedDivChildren content: \n"
+ detachedDivChildren);
}
publicstaticvoidmain(字符串…参数){
Document=Jsoup
.parse(“- 11
- 22
pppsp在这里您可以获得一级子级的值
Element addDetails = doc.select("div.container > div.main-content > div.clearfix > div.col_7.post-info > ul.no-bullet").first();
Elements divChildren = addDetails.children();
for (Element elem : divChildren) {
System.out.println(elem.text());
}
这将为您提供所需的父节点直接后代列表:
Elements firstLevelChildElements = doc.select("parent-tag > *");
或者您也可以尝试检索父元素,通过child(int index)
获取第一个子节点,然后尝试通过siblingElements()
检索此子节点的同级节点
这将为您提供一级子项列表,不包括已使用的子项,但是您必须在外部添加子项
Elements firstLevelChildElements = doc.child(0).siblingElements();
谢谢。当你知道你在寻找哪个子元素时,它会很有用。在我正在实现的算法中,我不知道。你能不能在类中给出它们和预定义的索引,并使用该索引来获取它们?生活应该比它更简单。返回元素的第一级子元素是一种非常基本的方法,几乎所有解析器都支持。t索引的问题是,我不知道元素有多少个直接子元素。此外,似乎索引是从叶子到父元素进行的,这使得使用它们变得困难。嗯,我知道你总是可以使用第一种方法获得所有元素,通过猜测第一个元素是直接子元素,你总是可以将它放在一个表中或者只获取第一个查找它最后:父级>子级:直接从父级派生的子元素,例如div.content>p查找p元素;body>*查找body标记的直接子级。Element.children()
返回直接子级,不是吗?如果您有疑问,请尝试Element.children().size()
。我尝试了这个方法。它返回所有子项(子项和子项的子项)。您如何尝试?在循环中,它也可以像这样以更简洁的方式完成。对于(元素elem:divChildren){elem=elem.clone();elem.empty();detachedDivChildren.add(detachedChildren);}
Elements firstLevelChildElements = doc.child(0).siblingElements();