2012-06-30 2 views
0

В БД У меня есть строки XML, хранящиеся в столбце. Ниже мой XML структура:Как сравнить строки XML в C#?

<?xml version="1.0"?> 
-<ProductAttributes xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
-<Attribute Required="false" ID="2" Name="Color"> 
<Value ID="18">Light Pink</Value> 
</Attribute> 
-<Attribute Required="false" ID="1" Name="Size"> 
<Value ID="9">XL</Value> 
</Attribute> 
</ProductAttributes> 

Другой XML является:

<?xml version="1.0"?> 
-<ProductAttributes xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
-<Attribute Required="false" ID="1" Name="Size"> 
<Value ID="1">S</Value> 
</Attribute> 
-<Attribute Required="false" ID="2" Name="Color"> 
<Value ID="4">Red</Value> 
</Attribute> 
-<Attribute Required="false" ID="3" Name="Weight"> 
<Value ID="6">10gr</Value> 
</Attribute> 
</ProductAttributes> 

Примечания

  1. Там может быть п число XML-строки, и каждая строка XML может иметь m Количество просмотров:

  2. Узлы атрибутов могут быть в другом порядке, например, в первом атрибуте Id = 1 может быть первым атрибутом, а во втором атрибуте Id = 1 может быть последним.

Требования не сравнить эти строки XML п и найти, если какие-либо из строк имеет полное дублирование атрибутов (это сравнение будет рассматривать значения, порядок может отличаться).

Пожалуйста, помогите мне.

+0

[Что вы пробовали?] (Http://mattgemmell.com/2008/12/08/what-have-you-tried/) –

ответ

1

Вы можете выполнить итерацию всех узлов XML-документа A и для каждого узла, посмотреть его xpath в XML-документе B. Если какие-либо пути не найдены или путь не найден, но значение отличается, документы не являются одна и та же'.

Вы бы тогда должны делать то же самое для всех узлов B, проверяя XPaths в A, чтобы гарантировать, что нет ничего «в B, но не в»

Оптимизировать на выходе как «не равно», как как только xpath не найден или значения не совпадают.

1

не сравнивать строки XML. Используйте их в качестве входных данных для синтаксического анализатора XML, который превратит их в деревья XML, затем будет искать деревья для сопоставления элементов и сравнить их список атрибутов.

Смежные вопросы