【问题标题】:Jsoup - CSS Select in DOM structureJsoup - DOM 结构中的 CSS 选择
【发布时间】:2013-05-19 00:00:23
【问题描述】:

我有以下 HTML:

some text <b>some bold text</b>
<span property='some property1>
some semantic term2</span> 
<p><span id='mark1'></span>
some text <i>some italic text</i></p>
<span property='some property2'>
some semantic term</span>
<span id='mark2'></span>

我想选择所有带有“property”属性的span元素,这些元素放置在id为“mark1”和“mark2”的span元素之间(这些是我的技术书签,然后应该删除)并打开它.

我认为在 Java Jsoup 中实现它的最佳方式是使用 doc.select 函数。但我无法创建正确的 CSS 查询(我需要类似的东西:每个 span 元素的属性属性都在这两个元素之间)。

预期结果(移除书签后):

  some text <b>some bold text</b>
    <span property='some property1>
    some semantic term2</span> 
    <p>
    some text <i>some italic text</i></p>
    some semantic term

有什么想法吗?也许像 E ~ F 之类的。非常感谢!

【问题讨论】:

  • 当然只是一个例子。我正在寻找一个通用的解决方案。
  • 他们都处于同一水平吗?也就是说,是同一个父母的直系子女吗?
  • 否 - 职位完全免费。我将解释:我根据用户在所见即所得编辑器中的选择插入书签。所以他可以选择他想要的任何东西。恐怕没有可用的 CSS 查询,我必须实现一些可怕的递归:-)。

标签: dom css-selectors jsoup


【解决方案1】:

这是不可能的:Jsoup selector syntax 没有足够的表现力来选择两个任意位置标签之间的所有标签。

但是,您可以将NodeTraverser 类与NodeVisitor 实现结合使用,该实现收集两个书签元素之间访问的所有元素。 (这应该比您评论中提到的“一些可怕的递归”更容易。)

【讨论】:

    猜你喜欢
    • 2016-11-30
    • 2013-11-25
    • 2014-09-19
    • 1970-01-01
    • 2013-06-08
    • 2014-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多