【发布时间】:2020-04-28 15:09:09
【问题描述】:
我对 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
}));
}
【问题讨论】:
-
您正在寻找
Mod元素,但它们都是mod元素。您还在寻找名为Name和Hash的元素,但它们实际上是名为Name和sha1的属性。 (不清楚你为什么使用Contains而不仅仅是使用root.Descendants("mod")。) -
您的 XML 元素没有称为 Hash 的属性,而是根据您的上述代码 sn-p 为 sha1、sha2。这可能是它不会查找和填充 Hash 属性的原因。