Очевидно, мне нужно (а) преобразовать обе строки в канонический XML или (b) сравнить их синтаксические деревья. Следующее не работает, потому что возвращенный объект документа не имеет разумного ==
.
Nokogiri.XML(doc_a) == Nokogiri.XML(doc_b)
И не делает следующее, потому что Nokogiri to_xml
оставляет некоторые внутренние пробелы:
Nokogiri.XML(doc_a).to_xml == Nokogiri.XML(doc_b).to_xml
Это разумное приближение равенства (и будет работать в большинстве случаев), но это не совсем верно:
Nokogiri.XML(doc_a).to_xml.squeeze(' ') == Nokogiri.XML(doc_b).to_xml.squeeze(' ')
Я уже использую Nokogiri, поэтому я бы предпочел придерживаться его, но я буду использовать любую библиотеку.