gpt4 book ai didi

java - 在 JSoup 中获取基于父级的元素

转载 作者:行者123 更新时间:2023-11-29 05:59:00 25 4
gpt4 key购买 nike

在下面的 XML 中,我希望能够获取第一个标题标签的内容,而不是第二个。不幸的是,代码打印了两个标题标签的内容......

任何帮助都将非常感谢!

String feedXMLString = "<entry><title>title 1</title><source><title>title 2</title></source></entry>";
Document feedXML = Jsoup.parse(feedXMLString);

NodeTraversor feedXMLTraversor = new NodeTraversor(new NodeVisitor() {

@Override
public void tail(Node node, int depth) {
if (node instanceof Element) {

String tagName = ((Element) node).tagName();
String parentTagName = ((Element) node).parent().tagName();

if (tagName.equals("title")) {
if (parentTagName.equals("entry")) {
String title = ((Element) node).ownText();
System.out.println(title);
}
}
}
}

@Override
public void head(Node node, int depth) {
}
});
feedXMLTraversor.traverse(feedXML.body());

输出是

title 1
title 2

我只希望它成为标题 1。我假设第二个标题的父标签是 <source>。 ,但出于某种原因,JSoup 似乎认为它是 <entry>

谢谢!

谢谢!

最佳答案

为什么不使用 Jsoup API 的选择器部分?它更容易使用,更干净,而且我敢打赌它也更快。我个人使用的是:

//The line you already had
Document doc = Jsoup.parse(feedXMLString);

//This will get you all the titles
Elements elems = doc.select("title");

//And now you can proceed in various ways:
String title1stWay = elems.first().text();
String title2ndWay = elems.get(0).text();

看这里:Jsoup Selector API

关于java - 在 JSoup 中获取基于父级的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10891730/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com