Нет. XmlDocument не переопределяет поведение метода Equals()
, поэтому фактически выполняет просто равенство ссылок - что не получится в вашем примере, если документы на самом деле не являются одним и тем же экземпляром объекта.
Если вы хотите сравнить содержимое (атрибуты, элементы, комментарии, PI и т. Д.) Документа, вам придется самостоятельно реализовать эту логику. Будьте осторожны: это не тривиально.
В зависимости от вашего точного сценария, вы можете удалить все ненужные пробелы из документа (что само по себе может быть сложным), и они сравнивают полученный XML-текст. Это не идеально - оно не подходит для документов, которые семантически идентичны, но отличаются такими вещами, как использование и объявление пространств имен, или экранирование определенных значений, порядок элементов и т. Д. Как я уже говорил, сравнение XML не тривиально.
Вам также необходимо четко определить, что означает, что два XML-документа должны быть «идентичными». Имеет ли значение порядок элементов или атрибутов? Имеет ли значение регистр (в текстовых узлах)? Стоит ли игнорировать лишние разделы CDATA? Учитываются ли инструкции по обработке? А как насчет полностью квалифицированных или частично квалифицированных пространств имен?
В любой реализации общего назначения вы, вероятно, захотите преобразовать оба документа в некоторую каноническую форму (будь то XML или другое представление) и затем сравнить канонизированный контент.
Уже существуют инструменты, которые выполняют различие XML, например Microsoft XML Diff / Patch , , вы можете использовать это для выявления различий между двумя документами. Насколько мне известно, этот инструмент не распространяется в исходной форме ... поэтому, чтобы использовать его во встроенном приложении, вам нужно было бы написать сценарий процесса (если вы планируете использовать его, вы должны сначала убедиться, что условия лицензирования разрешают его использование и распространение). ).
РЕДАКТИРОВАТЬ: Проверьте @ ответ Макс Торо , если вы используете .NET 3.5 SP1, как, очевидно, есть вариант в XLinq, который может быть полезным. Приятно знать, что оно существует.