Как получить все атрибуты дочернего элемента в массиве из xdocument - PullRequest
0 голосов
/ 29 сентября 2018

У меня есть xml в следующем формате

<ABC Attr1="1" Attr2="2">
   <PQR Attr1="1" Attr2="2" Attr="3">
   <XYZ Attr1="1" Attr2="2"></XYZ>
   <HIJ Attr1="1" Attr2="2"></HIJ>
   </PQR>
</ABC>

Теперь я хочу получить все атрибуты PQR, XY и HIJ в одном массиве.Кто-нибудь может подсказать мне, как это получить?

1 Ответ

0 голосов
/ 30 сентября 2018

Я создал словарь и исправил xml

Вот код xml

<ABC Attr1="1" Attr2="2">
   <PQR Attr1="1" Attr2="2" Attr="3"/>
   <XYZ Attr1="1" Attr2="2"/>
   <HIJ Attr1="1" Attr2="2"/>
</ABC>

Вот код:

using System;
using System.Collections.Generic;
using System.Collections;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;

namespace ConsoleApplication1
{
    class Program
    {
        const string FILENAME = @"c:\temp\test.xml";
        static void Main(string[] args)
        {
            XDocument doc = XDocument.Load(FILENAME);
            XElement abc = doc.Root;

            Dictionary<string, Dictionary<string,string>> dict = abc.Elements()
                .GroupBy(x => x.Name.LocalName, y => y.Attributes()
                    .GroupBy(a => a.Name.LocalName, b => (string)b)
                    .ToDictionary(a => a.Key, b => b.FirstOrDefault()))
                .ToDictionary(x => x.Key, y => y.FirstOrDefault());
        }
    }
}
...