gpt4 book ai didi

java - Jsoup child 尺寸值不正确

转载 作者:行者123 更新时间:2023-12-01 18:30:43 25 4
gpt4 key购买 nike

Jsoup 错误地计算了子进程的数量:

    Document document = Jsoup
.parse(testString);

Element div = document.select("div").first();
Elements divChildren = div.children();
System.out.println(divChildren.size());

例如,如果 testString =

<div><div><p>text1</p></div><p>text2</p></div>

<div><h1><p>text1</p></h1><p>text2</p></div>

然后 divChildren.size() = 2

如果测试字符串=

<div><p><p>text1</p></p><p>text2</p></div>

然后 divChildren.size() = 4

我做错了什么?

最佳答案

如果你看一下document解析后保存

String testString ="<div><p><p>text1</p></p><p>text2</p></div>";

你会看到

<html>
<head></head>
<body>
<div>
<p></p>
<p>text1</p>
<p></p>
<p>text2</p>
</div>
</body>
</html>

@Rejesh pointed p不能包含其他 block 级元素,例如 p因此 Jsoup 通过关闭此类不正确的外部来防止它 p元素(用于打开标签和关闭标签的单独闭合)。对于你的情况

    <p><p>text</p></p>

将成为

<strong><p></p></strong><p>text1</p><strong><p></p></strong>

所以你的div

<div><p><p>text1</p></p><p>text2</p></div>

将被解析为

  <div>
<p></p>
<p>text1</p>
<p></p>
<p>text2</p>
</div>

如您所见,有 4 个子级(两个空 p 和两个带有文本的 p)。

<小时/>

如果您想关闭此验证机制,您可以使用 XML 解析器而不是标准 HTML 解析器

String testString ="<div><p><p>text1</p></p><p>text2</p></div>";

Document document = Jsoup.parse(testString,"",Parser.xmlParser());
System.out.println(document);
Element div = document.select("div").first();
Elements divChildren = div.children();
System.out.println(divChildren.size());

现在将打印2

关于java - Jsoup child 尺寸值不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24342434/

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