使用Jsoup获取没有属性的元素

时间:2015-09-17 05:47:22

标签: java html jsoup

我有以下html,使用Jsoup我尝试提取p部分中没有任何属性的文本(文本"有些文本2"而不是"一些文字1")。

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

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

typeof(MyClass).GetTypeInfo().DeclaredProperties.Any(p => p.PropertyType.GetTypeInfo().IsGenericType)

但它不起作用。 谢谢你的帮助。

1 个答案:

答案 0 :(得分:4)

我认为你可以使用JSOUP CSS selector p: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元素。