【问题标题】:Getting element with no attributes using Jsoup使用 Jsoup 获取没有属性的元素
【发布时间】:2015-09-17 18:26:24
【问题描述】:

我有以下 html,使用 Jsoup 我试图提取 p 部分中没有任何属性的文本(文本“Some text 2”而不是“Some text 1”)。

<div id="intro">
    <h1 class="some class">
    <p id="some_id">
        Some text 1
    </p>
    <p>
        Some text 2
    </p>
</div> 

我尝试使用以下 Jsoup 表达式:

div[id=intro] > p:not(:has(@*))

但它不起作用。 感谢您的帮助。

【问题讨论】:

  • "div#intro p:not(#some_id)" 怎么样,它将选择第二个 p,但仅在您的情况下,它并没有说所有 p 都没有属性

标签: java html jsoup


【解决方案1】:

我认为你可以使用JSOUP CSS selectorp:not([^]),它会选择任何不匹配的p,其属性以任何开头。

String html = "<div id=\"intro\">"
        + "<h1 class=\"some class\">"
        + "<p id=\"some_id\">"
        +   "Some text 1"
        + "</p>"
        + "<p name=\"some_name\">"
        +   "Some text A"
        + "</p>"
        + "<p data>"
        +   "Some text B"
        + "</p>"
        +"<p>"
        +   "Some text 2"
        +"</p>"
        +"</div> ";

Document doc = Jsoup.parse(html);
Elements els = doc.select("p:not([^])");
for (Element el:els){
    System.out.println(el.text());
}

上面的例子只会打印出来

Some text 2

因为只有这个p元素没有属性。

请注意,选择器 p[^] 将选择所有具有属性的 p 元素。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-06
    • 2013-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多