我正在创建一个工具,它将检查动态生成的 XHTML 并根据预期内容对其进行验证。
我需要确认结构正确并且特定属性存在/匹配。可能还有其他我不感兴趣的属性,因此不适合直接进行字符串比较。
验证这一点的一种方法是使用 XPath,我已经实现了这一点,但我也想要一些不那么冗长的东西 - 我希望能够使用 CSS 选择器,就像我可以使用 jQuery 一样,但是在服务器上 - 在 CFML 代码中 -而不是在客户端。
是否有 CFML 或 Java 库允许我针对 XHTML 字符串使用 CSS 选择器?
我正在创建一个工具,它将检查动态生成的 XHTML 并根据预期内容对其进行验证。
我需要确认结构正确并且特定属性存在/匹配。可能还有其他我不感兴趣的属性,因此不适合直接进行字符串比较。
验证这一点的一种方法是使用 XPath,我已经实现了这一点,但我也想要一些不那么冗长的东西 - 我希望能够使用 CSS 选择器,就像我可以使用 jQuery 一样,但是在服务器上 - 在 CFML 代码中 -而不是在客户端。
是否有 CFML 或 Java 库允许我针对 XHTML 字符串使用 CSS 选择器?
我刚刚发布了一个开源项目,它是 Java 中的 W3C CSS Selectors Level 3 实现。请试一试。我一直在寻找同样的东西,并决定实现我自己的引擎。它的灵感来自 WebKit 等中的代码。
我不知道 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 选择器查询。
如果 JRuby-route 对您开放,Hpricot 绝对是一个很棒的解决方案。
写。XPath 是访问 XML 文档的“正确”方式……抱歉,这是垃圾。访问 XML 文档元素的方法有很多种:DOM 遍历、XPath、XQuery、CSS 选择器等等。XPath 肯定很流行,但 CSS 选择器非常强大,假设您的 XML 文档具有 HTML 语义。
如果你可以在你的 CFML 中使用 PHP(如上所述),你可以利用这个优秀的“jQuery for PHP”库,phpQuery
完整的 CSS 选择器支持、操作函数、遍历等。它应该可以很好地满足您的需求。
希望能帮助到你。
服务器和客户端之间存在理论上的差异。对于 Web 浏览器,文档是一个活生生的 DOM 层次结构。对于您的服务器代码,它只是一个任何类型的 XML 文档。XPath 是访问 XML 文档元素的“正确”方式。
因此,除非您当前的 XPath 解决方案存在严重的性能问题,或者它实际上不能正常工作,否则我建议您坚持使用它。尝试一些太聪明的东西会带来破坏正在工作的东西的风险。
如果您发现 XPath过于冗长和丑陋而无法闲置,或者想要在不同情况下重用该工具,或者只是无法抗拒尝试做一些聪明的事情,那么您可以尝试编写一个实用程序将给定的 CSS 选择器编译成 XPath。然后,您可以在需要时在一行中调用它。
使用 cQuery.com 可能更容易 - cQuery.com 是一个基于 API 的“内容查询引擎”,通过使用 CSS 从实时网站中提取内容。
您可以在您的应用程序中以编程方式使用它。