我正在使用运行良好的Java Scripting API。现在我有一个函数,我想<a>
从字符串中获取所有标签,然后在返回操纵的字符串之前添加/删除属性。问题当然是,我不能只使用document.getElementsByTagName
. 是否有任何简单的选项可以在不经过 regex-hell 的情况下出现在您的脑海中?
请注意,我目前在 Java 7(使用 Rhino)上运行,计划更新到 Java 8(使用 Nashorn),所以我不想使用任何 Rhino 特定的 API。
我正在使用运行良好的Java Scripting API。现在我有一个函数,我想<a>
从字符串中获取所有标签,然后在返回操纵的字符串之前添加/删除属性。问题当然是,我不能只使用document.getElementsByTagName
. 是否有任何简单的选项可以在不经过 regex-hell 的情况下出现在您的脑海中?
请注意,我目前在 Java 7(使用 Rhino)上运行,计划更新到 Java 8(使用 Nashorn),所以我不想使用任何 Rhino 特定的 API。
在 Addi Osmani 的“Learning JavaScript Design Patterns”一书中,作者提到了类似问题的 3 个替代方案,显然 getElementById() 是最快的。
书中摘录:
想象一下,我们有一个脚本,对于在页面上找到的每个具有类“foo”的 DOM 元素,我们希望增加一个计数器。查询此元素集合的最有效方法是什么?好吧,有几种不同的方法可以解决这个问题:
- 选择页面中的所有元素,然后存储对它们的引用。接下来,过滤此集合并使用正则表达式(或其他方式)仅存储具有“foo”类的那些。
- 使用现代本机浏览器功能,例如
querySelectorForAll()
选择具有“foo”类的所有元素。- 使用网络特征,例如
getElementsByClassName()
类似地......
另一种方法是,由于您使用的是 Nashorn/Rhino,您可以使用 Xerces 库的 Java 实现来操作 DOM。
希望这可以帮助您找到解决方案。