C# l oop через атрибуты внутри xml файла - PullRequest
0 голосов
/ 28 апреля 2020

Я очень плохо знаком с C#, но пытаюсь создать приложение для анализа простого файла XML, как показано ниже, и заполнения данных внутри многостолбцового ListView.

<mods>
<mod Name="mod1.zip" sha1="508ed8f5fcd7d323d9296acad76f1183b810f62a"/>
<mod Name="mod2.zip" sha1="669d8d09d297a9724fe1d1d676ac5f5a8ff10277"/>
</mods>

Вот код, из которого я пытаюсь работать, но он не заполняет ListView, как я ожидаю ..

modList.View = View.Details;
modList.Columns.Add("Name", 650);
modList.Columns.Add("Status", 111, HorizontalAlignment.Center);

XElement root = XElement.Load("https://website.com/modlist.xml");
var mods = from subject in root.Descendants()
            where subject.Name.LocalName.Contains("Mod")
            select new
            {
                Name = subject.Element("Name").Value,
                Hash = subject.Element("Hash").Value,
            };

foreach (var mod in mods)
{
    modList.Items.Add(new ListViewItem(new string[]
        {
            mod.Name,
            mod.Hash
        }));

}

1 Ответ

2 голосов
/ 28 апреля 2020

Вы можете получить все моды, используя Descendants("mod"). И атрибут, используя Attribute("Name")

var mods = from ele in xDoc.Descendants("mod")
                    select new
                    {
                        Name = (string)ele.Attribute("Name"),
                        Hash = (string)ele.Attribute("sha1")
                    };

Демо

Вы можете использовать Attributes(), чтобы перечислить все атрибуты. Если вам нужно обрабатывать Ha sh beeing с атрибутом SHA-1, SHA-2 или SHA-256

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...