6

動的に生成された XHTML をチェックし、予想されるコンテンツに対して検証するツールを作成しています。

構造が正しいこと、および特定の属性が存在する/一致することを確認する必要があります。私が興味を持っていない他の属性があるかもしれないので、直接の文字列比較は適していません。

これを検証する 1 つの方法は XPath を使用することです。私はこれを既に実装していますが、もう少し冗長なものを希望します - jQuery のように CSS セレクターを使用できるようにしたいのですが、サーバー上で - CFML コード内で -クライアントとは対照的に。

XHTML 文字列に対して CSS セレクターを使用できる CFML または Java ライブラリはありますか?

4

6 に答える 6

2

JRubyルートがあなたに開かれているなら、Hpricotは間違いなく素晴らしい解決策です。

に関して。XPathはXMLドキュメントにアクセスするための「正しい」方法です...申し訳ありませんが、これはごみです。XMLドキュメントの要素にアクセスする方法は多数あります。たとえば、DOMトラバーサル、XPath、XQuery、CSSセレクターなどです。XPathは確かに人気がありますが、XMLドキュメントにHTMLセマンティクスがあると仮定すると、CSSセレクターは非常に強力です。

于 2009-02-24T14:40:31.263 に答える
2

Java ライブラリ自体については知りませんが、Hpricotと呼ばれる Ruby ライブラリがあり、まさにあなたが探しているものを実行します。Java プラットフォームでの Ruby 実装であるJRubyと組み合わせると、(BSF、 JSR-222 Scripting API、または内部 APIを使用して) Java コードから Ruby メソッドを呼び出すのは比較的簡単です。

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 に答える
0

サーバーとクライアントの間には理論的な違いがあります。Web ブラウザーにとって、ドキュメントは生きた DOM 階層です。サーバー コードにとって、これは単なる XML ドキュメントにすぎません。XPath は、XML ドキュメントの要素にアクセスするための「正しい」方法です。

そのため、現在の XPath ソリューションに重大なパフォーマンス上の問題がある場合や、実際に正しく機能しない場合を除き、そのまま使用することをお勧めします。巧妙すぎることを試みると、機能しているものを壊してしまう危険性があります。

XPath があまりにも冗長で見苦しく、そのままにしておくことができない場合、または別のケースでツールを再利用するためにより多くの機能が必要である場合、または何か巧妙なことをしようとすることに抵抗できない場合は、次のようなユーティリティを作成してみてください。指定された CSS セレクターを XPath にコンパイルします。その後、必要なときにいつでもこれを 1 行で呼び出すことができます。

于 2008-10-11T00:11:39.240 に答える
0

cQuery.com を使用する方が簡単な場合があります - cQuery.com は、CSS を使用してライブ Web サイトからコンテンツを抽出するための API ベースの「コンテンツ クエリ エンジン」です。

アプリケーションでプログラム的に使用できます。

于 2010-01-25T16:16:40.670 に答える