1

<% %>内部に ruby​​ コードを含む ERB スタイルのタグを含む xml/html ドキュメントを ruby​​ で解析する方法を探しています。REXML、組み込みの XML パーサーでは、これを行うことはできません。

のようなサードパーティのライブラリを使用できる可能性があることは承知していますがhpricot、外部の依存関係は避けたいと考えています。

REXML のタグの厳密性を下げる方法はありますか? またはこのタグを認識させるには?他の解決策はありますか?

4

1 に答える 1

4

実際の Ruby コード自体が必要な場合、問題はパーサーにあるのではなく、XML の形式が正しくないという事実にあります。

私はまだあなたのXMLが次のようになっていると仮定しています:

<parent>
    <node>
         <% some code here! %>
    </node>
</parent>

その場合、nodeノード (heh) の内容は実際にはCDATAセクションである必要があります。したがって、次のようになります。

<node><![CDATA[
     <% some code here! %>
]]></node>

これを行うと、REXML は XML ファイルを適切に解析し、erb タグnode含むの内容を返すことができます。

XML の生成を制御できない場合は、その場しのぎの修正として、(ERB を含む任意のノードに ERBのみが含まれると仮定して) ファイル全体の検索と開始コードと終了コードの置換を行うことができます。タグを作成し、CDATA マークアップを適切に追加/先頭に追加します。これは、選択した言語で簡単に自動化できます。SO にはたくさんの例があります。

于 2009-07-03T05:39:40.883 に答える