Как я тестирую равенство XML в Ruby?

@Peter Meyer

Вы получаете идею. Я думаю, идя максимально слабо связанный, хорошая вещь, но возможно я немного увлекался!:)

Errr... да... Я думаю IStuffSmallEnoughToBeLostInAHaystack, отчасти красный флаг:-)

12
задан James A. Rosen 15 September 2009 в 15:30
поделиться

1 ответ

Преобразование их в строки не очень удачно. Например, если у элемента два атрибута, имеет ли значение порядок? В большинстве случаев нет. Имеет ли порядок дочерние элементы данного узла? Зависит от того, что вы делаете. Но если ответ на один из этих вопросов - «нет», тогда простое сравнение строк - это в лучшем случае путаница.

В Nokogiri нет ничего, что могло бы сделать это за вас; вам придется построить его самостоятельно. Аарон Паттерсон обсуждает некоторые вопросы здесь :

Что касается XML-документа обеспокоены, никакие два узла никогда не равный. Каждый узел в документе другой. На каждом узле много атрибуты для сравнения:

  1. Имя такое же?
  2. А как насчет атрибутов?
  3. Как насчет пространства имен?
  4. А как насчет количества детей?
  5. Все ли дочерние элементы одинаковы?
  6. Один и тот же родительский узел?
  7. Как насчет его положения относительно узлов-братьев?

Подумайте о добавлении двух узлов к тот же документ. Они не могут никогда иметь такое же положение относительно брата или сестры узлов, поэтому два узла в документ не может быть "равным".

Вы можете , однако сравните два разные документы. Но тебе нужно ответь на эти 7 вопросов сам как вы идете по двум деревьям. Твой требования к схожести могут отличаться от других.

Это лучший вариант: пройтись по деревьям и провести эти сравнения.

1
ответ дан 26 October 2019 в 11:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: