使用< %%>解析xml文档标签在红宝石

时间:2009-07-03 05:07:21

标签: xml ruby erb rexml

我正在寻找一种方法来解析ruby中的xml / html文档,其中包含带有ruby代码的ERB样式标记<% %>。 REXML,内置的XML解析器不允许我这样做。

我知道我可以使用像hpricot这样的第三方库,但我想避免任何外部依赖。

有没有办法让REXML对标签不那么严格?或者让它识别这个标签?还有其他解决办法吗?

1 个答案:

答案 0 :(得分:4)

好吧,如果您想要实际的Ruby代码本身,那么您的问题不在于解析器,而在于您的XML格式错误。

我仍然假设您的XML看起来像这样:

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

如果情况确实如此,node节点(heh)的内容实际上应该是CDATA部分。所以看起来应该是这样的:

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

如果这样做,REXML将能够正确解析XML文件,并返回node的内容,包含 erb标记。

如果您无法控制XML的生成,那么您可以作为一个临时修复(假设任何包含ERB 包含ERB的给定节点)执行文件广泛搜索和替换开始和结束代码标记,并适当地附加/添加CDATA标记。您可以使用您选择的语言轻松实现自动化,这里有很多示例。