添加可变数量的XElements

时间:2014-12-17 10:18:42

标签: c#

我正在编写一个应用程序来读取二进制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 个答案:

答案 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)))
        )
    );