6

我正在创建一个工具,它将检查动态生成的 XHTML 并根据预期内容对其进行验证。

我需要确认结构正确并且特定属性存在/匹配。可能还有其他我不感兴趣的属性,因此不适合直接进行字符串比较。

验证这一点的一种方法是使用 XPath,我已经实现了这一点,但我也想要一些不那么冗长的东西 - 我希望能够使用 CSS 选择器,就像我可以使用 jQuery 一样,但是在服务器上 - 在 CFML 代码中 -而不是在客户端。

是否有 CFML 或 Java 库允许我针对 XHTML 字符串使用 CSS 选择器?

4

6 回答 6

8

我刚刚发布了一个开源项目,它是 Java 中的 W3C CSS Selectors Level 3 实现。请试一试。我一直在寻找同样的东西,并决定实现我自己的引擎。它的灵感来自 WebKit 等中的代码。

http://github.com/chrsan/css-selectors/tree

于 2009-04-07T12:03:53.703 回答
2

我不知道 Java 库本身,但是有一个名为Hpricot的 Ruby 库可以完全满足您的需求。结合 Java 平台上的 Ruby 实现JRuby,从 Java 代码调用 Ruby 方法应该相对简单(使用 BSF、JSR-222 脚本 API内部 API)。

您使用的是 Coldfusion 8 吗?Coldfusion 8 基于 Java 6,支持 JSR-222 脚本 API“javax.scripting”。

看看这篇关于在 CFML 中嵌入 PHP 的博客文章。您应该能够对Ruby 做同样的事情。这篇博文中链接了 ZIP 文件示例代码,如果你打开 CFML,你会看到一个在 CFML 中嵌入 Ruby 的好例子。

尽管使所有部分一起工作可能需要一些工作,但通过一些投资,它应该为您提供您正在寻找的强大的解析/CSS 选择器查询。

于 2008-10-10T23:59:14.960 回答
2

如果 JRuby-route 对您开放,Hpricot 绝对是一个很棒的解决方案。

写。XPath 是访问 XML 文档的“正确”方式……抱歉,这是垃圾。访问 XML 文档元素的方法有很多种:DOM 遍历、XPath、XQuery、CSS 选择器等等。XPath 肯定很流行,但 CSS 选择器非常强大,假设您的 XML 文档具有 HTML 语义。

于 2009-02-24T14:40:31.263 回答
2

如果你可以在你的 CFML 中使用 PHP(如上所述),你可以利用这个优秀的“jQuery for PHP”库,phpQuery

完整的 CSS 选择器支持、操作函数、遍历等。它应该可以很好地满足您的需求。

希望能帮助到你。

于 2009-08-22T17:00:05.800 回答
0

服务器和客户端之间存在理论上的差异。对于 Web 浏览器,文档是一个活生生的 DOM 层次结构。对于您的服务器代码,它只是一个任何类型的 XML 文档。XPath 是访问 XML 文档元素的“正确”方式。

因此,除非您当前的 XPath 解决方案存在严重的性能问题,或者它实际上不能正常工作,否则我建议您坚持使用它。尝试一些太聪明的东西会带来破坏正在工作的东西的风险。

如果您发现 XPath过于冗长和丑陋而无法闲置,或者想要在不同情况下重用该工具,或者只是无法抗拒尝试做一些聪明的事情,那么您可以尝试编写一个实用程序将给定的 CSS 选择器编译成 XPath。然后,您可以在需要时在一行中调用它。

于 2008-10-11T00:11:39.240 回答
0

使用 cQuery.com 可能更容易 - cQuery.com 是一个基于 API 的“内容查询引擎”,通过使用 CSS 从实时网站中提取内容。

您可以在您的应用程序中以编程方式使用它。

于 2010-01-25T16:16:40.670 回答