У меня есть что-то вроде XML.
<root>
<element attributeId="1" attribute2="1" attribute3="A" />
<element attributeId="1" attribute2="2" attribute3="A" />
<element attributeId="2" attribute2="1" attribute3="A" />
<element attributeId="3" attribute2="1" attribute3="A" />
<element attributeId="3" attribute2="1" attribute3="B" />
</root>
Я хочу сравнить атрибуты, которые изменились для элемента с таким же атрибутом attributeId, я создал класс для хранения результатов, который выглядит примерно так:
public class Result
{
public string AttributeName { get; set; }
public string OldValue { get; set; }
public string NewValue { get; set; }
}
Я хочу получить из этого списка результатов, я создал переменную:
List<Result> result;
если я запускаю следующий код:
foreach (Result item in result)
{
/* Write results */
}
Ожидаемый результат будет:
Attribute2 | 1 | 2 (For ID 1)
Attribute2 | 1 | Null (For ID 2 as there is no value to compare)
Attribute3 | A | B (For ID 3)
Это должно быть выполнено с помощью linq to xml, и я уже знаю о XmlDiff от Microsoft, но этот инструмент для меня не вариант. У меня есть более недели, исследуя и пытаясь решить эту проблему. В идеале количество атрибутов будет меняться, а также их имена, так что если кто-то сможет найти способ сделать то же самое выше для XML, такого как
<root>
<element attid="1" aa="1" bb="A" cc="X" />
<element attid="1" aa="2" bb="A" cc="Y" />
<element attid="2" aa="1" bb="A" cc="X" />
<element attid="3" aa="1" bb="A" cc="X" />
<element attid="3" aa="1" bb="B" cc="X" />
</root>