Я пишу приложение для чтения двоичного 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 за последний час.
Если бы кто-то мог мне помочь, я бы очень признателен!
Вы можете использовать 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)))
)
);
using System.Linq;