我很难获得正确的输出。请参阅下面的HTML示例文本:
<p><span class="v">1</span> Een psalm van David. De HEERE is mijn Herder, mij zal niets ontbreken.</p>
<p><span class="v">2</span> Hij doet mij nederliggen in grazige weiden; Hij voert mij zachtjes aan zeer stille wateren.</p>
<p><span class="v">3</span> Hij verkwikt mijn ziel; Hij leidt mij in het spoor der gerechtigheid, om Zijns Naams wil.</p>
我希望得到段
的值 Een psalm van David。 De HEERE是mijn Herder,mij zal niets ontbreken。基于用户选择的诗歌
到目前为止,这就是我所做的:
HttpGet get = new HttpGet(url);
HttpResponse resp = client.execute(get);
String content = EntityUtils.toString(resp.getEntity());
Document doc = Jsoup.parse(content);
StringBuilder sb = new StringBuilder();
Elements passage = doc.select("p > span.v");
sb.append(passage.text() + "\n");
Elements links = doc.select(className);
for (Element link : links) {
sb.append(link.text() + " ");
}
Log.e("ELEMENTS", "" + sb.toString());
response = sb.toString();
但我只得到这些经文。如何获得正确的输出?我很乐意感谢任何帮助。感谢。
答案 0 :(得分:0)
假设你想得到第1
节的段落,你可以使用:
:has(selector)
仅获取包含与选择器匹配的元素的元素span.v:containsOwn(1)
表示您需要span
v
个text
包含1
的{{1}}。ownText()
来获取元素本身的文本而不是其子文本,否则如果您想要同时使用text()
。所以代码可以是:
String className = "v";
int verse = 1;
Element p = doc.select(String.format("p:has(span.%s:containsOwn(%d))", className, verse))
.first();
System.out.println(p.ownText());
<强>输出:强>
Een psalm van David. De HEERE is mijn Herder, mij zal niets ontbreken.
如果您想获得所有段落的内容,代码可以是:
StringBuilder sb = new StringBuilder();
Elements paragraphs = doc.select("p:has(span.v)");
for (Element p : paragraphs) {
sb.append(p.ownText() + "\n");
}
System.out.println(sb);
<强>输出:强>
Een psalm van David. De HEERE is mijn Herder, mij zal niets ontbreken.
Hij doet mij nederliggen in grazige weiden; Hij voert mij zachtjes aan zeer stille wateren.
Hij verkwikt mijn ziel; Hij leidt mij in het spoor der gerechtigheid, om Zijns Naams wil.