【问题标题】:Manipulating HTML nodes with java javascript scripting API使用 java javascript 脚本 API 操作 HTML 节点
【发布时间】:2014-10-20 12:23:25
【问题描述】:

我正在使用运行良好的Java Scripting API。现在我有一个函数,我想从字符串中获取所有<a> 标记,然后在返回操纵的字符串之前添加/删除属性。问题当然是,我不能只使用document.getElementsByTagName。有没有不经过正则表达式地狱的简单选择?

请注意,我目前在 Java 7(使用 Rhino)上运行,计划更新到 Java 8(使用 Nashorn),所以我不想使用任何 Rhino 特定的 API。

【问题讨论】:

    标签: java javascript rhino nashorn java-scripting-engine


    【解决方案1】:

    在 Addi Osmani 的“学习 JavaScript 设计模式”一书中,作者提到了类似问题的 3 个替代方案,显然 getElementById() 是最快的。

    摘自本书:

    想象一下,我们有一个脚本,用于在页面上找到每个 DOM 元素 对于“foo”类,我们希望增加一个计数器。什么最 查询此元素集合的有效方法?嗯,那里 有几种不同的方法可以解决这个问题:

    • 选择页面中的所有元素,然后存储对它们的引用。接下来,过滤这个集合并使用正则表达式(或 另一种方法)只存储具有“foo”类的那些。
    • 使用现代本机浏览器功能(例如 querySelectorForAll())选择所有具有“foo”类的元素。
    • 使用诸如getElementsByClassName() 之类的网络功能来类似地...

    另一种方法是,由于您使用的是 Nashorn/Rhino,您可以使用 Xerces 库的 Java 实现来操作 DOM。

    希望这可以帮助您找到解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-29
      相关资源
      最近更新 更多