显然,我需要(a)将两个字符串转换为规范XML或(b)比较它们的解析树.以下不起作用,因为返回的文档对象没有明确的==定义.
Nokogiri.XML(doc_a) == Nokogiri.XML(doc_b)
Run Code Online (Sandbox Code Playgroud)
以下也不是,因为Nokogiri to_xml留下了一些内部空白:
Nokogiri.XML(doc_a).to_xml == Nokogiri.XML(doc_b).to_xml
Run Code Online (Sandbox Code Playgroud)
这是一个合理的近似平等(并且适用于大多数情况),但它并不完全正确:
Nokogiri.XML(doc_a).to_xml.squeeze(' ') == Nokogiri.XML(doc_b).to_xml.squeeze(' ')
Run Code Online (Sandbox Code Playgroud)
我已经在使用Nokogiri,所以我更愿意坚持下去,但我会使用任何图书馆的作品.
cbe*_*eer 13
实际上有几个很好的基于Nokogiri的库用于检查XML树的等价性,包括equivalent-xml或nokogiri-diff,这可能会有所帮助.
我更喜欢等效xml,因为它提供了更多的灵活性(可能以严格为代价?),允许您与元素顺序或空格进行比较或不考虑.