Как установить значение атрибута в определенной позиции внутри Xelement с помощью Linq на xml? - PullRequest
0 голосов
/ 10 июля 2020

Мне нужно добавить новый атрибут к узлу xml, который имеет около 10 атрибутов. Использование следующей команды добавляет атрибут в конец списка атрибутов элемента.

*identityVerificationManagerServiceNode.SetAttributeValue("PresetID", "24761685-715F-40F3-8FDA-5C2E372A1186");*

Я не хочу, чтобы он go до конца, мне он нужен после атрибут, XName которого равен "DefinitionID". Есть ли способ изменить порядок атрибутов внутри элемента с помощью Linq на XML?

1 Ответ

0 голосов
/ 01 августа 2020

Упорядочить атрибуты можно с помощью XLinq:

static void Main(string[] args)
        {
            XElement xe1 = XElement.Parse(@"<root><some-element a = '1' c = '3' b = '2' d = '4' e = '5' g = '6' h = '7'/></root>");
            XElement xe2 = new XElement("root");
            foreach (XElement xe in xe1.Elements()){
                xe2.Add(new XElement(xe.Name.LocalName, xe.Attributes().Select(c => c).OrderBy(c => c.Name.LocalName)));
            }
            Console.Write("unordered-->\n");
            Console.Write(xe1.ToString());
            Console.Write("\n\nordered-->\n");
            Console.Write(xe2.ToString());
            Console.ReadKey();
        }
...