使用nokogiri在XML片段中消失的实体

时间:2016-04-01 09:35:17

标签: ruby xml nokogiri html-entities

我正在使用Nokogiri处理XHTML文档的片段,并且遇到了一些我无法解释或解决的行为。我不确定这是一个错误,还是我不理解的东西。

考虑以下两行,展示我遇到的问题的简化版本:

puts Nokogiri::XML::DocumentFragment.parse("&nbsp;<pre>&lt;div>foo&lt;/div></pre>")
puts Nokogiri::XML::DocumentFragment.parse("<pre>&lt;div>foo&lt;/div></pre>")

这是输出:

<pre>div&gt;foo/div&gt;</pre>
<pre>&lt;div&gt;foo&lt;/div&gt;</pre>

第二行是我的期望,但第一行让我困惑。 &nbsp;去了哪里?为什么它的存在导致&lt;消失?

1 个答案:

答案 0 :(得分:1)

基于matt的建议,我正在通过将片段包装在一个完整的XHTML文件中来解析片段,因为这样可以让Nokogiri知道XHTML实体。

  void deletRecursive(File fileOrDirectory){
    if(fileOrDirectory.isDirectory()){
        for(File child :fileOrDirectory.listFiles())
            deletRecursive(child);
        fileOrDirectory.delete();
    }
    if(!fileOrDirectory.delete()){


    }
}

感觉有点沉重,但它确实有效。