Добавить переменную номер XElements

1

Я пишу приложение для чтения двоичного 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 за последний час.

Если бы кто-то мог мне помочь, я бы очень признателен!

Теги:

1 ответ

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)))
        )
    );
  • 0
    Большое спасибо, мой LINQ ужасен. Теперь я вижу эту ошибку: «Не удалось найти реализацию шаблона запроса для типа источника« объект ».« Выбрать »не найдено». Как я могу перечислить через мой объект? Я никогда не работал с ними до сих пор.
  • 0
    какой тип значков? и вам нужно using System.Linq;
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню