我正在寻找一种方法来解析ruby中的xml / html文档,其中包含带有ruby代码的ERB样式标记<% %>
。 REXML,内置的XML解析器不允许我这样做。
我知道我可以使用像hpricot
这样的第三方库,但我想避免任何外部依赖。
有没有办法让REXML对标签不那么严格?或者让它识别这个标签?还有其他解决办法吗?
答案 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标记。您可以使用您选择的语言轻松实现自动化,这里有很多示例。