我正在编写一个应用程序来读取二进制plist,然后将一些数据输出到XML文件,但是遇到了一些障碍。这是我目前的代码:
BinaryPlistReader bpr = new BinaryPlistReader();
IDictionary plist = bpr.ReadObject(outputFolder + "\\Info.plist");
string name = plist["CFBundleName"].ToString();
string bundle = plist["CFBundleIdentifier"].ToString();
var icons = plist["CFBundleIconFiles"];
XElement apps =
new XElement("Applications",
new XElement("Application",
new XAttribute("Name", name),
new XAttribute("CFBundleIdentifier", bundle),
new XElement("Icon", "filename",
new XAttribute("Size", "icon size")
)
)
);
apps.Save(outputFolder + "\\" + name + ".xml");
我想做这样的事情:
XElement apps =
new XElement("Applications",
new XElement("Application",
new XAttribute("Name", name),
new XAttribute("CFBundleIdentifier", bundle),
foreach (var icon in icons)
{
// Calculate icon size
new XElement("Icon", icon,
new XAttribute("Size", iconsize)
}
)
)
);
apps.Save(outputFolder + "\\" + name + ".xml");
但是我在XElement的定义中没有一个枚举器,所以我不确定如何做到这一点。尽管已经查看了过去一小时的SO答案,但我也不知道如何通过我的图标对象进行枚举。
如果有人可以帮助我,我真的很感激!
答案 0 :(得分:1)
您可以使用LINQ
XElement apps =
new XElement("Applications",
new XElement("Application",
new XAttribute("Name", name),
new XAttribute("CFBundleIdentifier", bundle),
(from icon in icons
select new XElement("Icon", icon,
new XAttribute("Size", iconsize)))
)
);