C# 如何使用C从XML文件加载属性#

C# 如何使用C从XML文件加载属性#,c#,xml,C#,Xml,我有一个创建XML文件的方法 public void saveXmlButtons() { XElement buttons = new XElement("Buttons"); // Create a root node for (int i = 0; i < 7; i++) { XElement id = new XElement("Button", listButtons[i].id.ToStr

我有一个创建XML文件的方法

    public void saveXmlButtons()
    {

        XElement buttons = new XElement("Buttons"); // Create a root node
        for (int i = 0; i < 7; i++)
        {
            XElement id = new XElement("Button", listButtons[i].id.ToString());
            XElement type = new XElement("appType", listButtons[i].type);
            XElement isActive = new XElement("isActive", listButtons[i].isActive);
            XElement name = new XElement("name", listButtons[i].lblName.Content);
            XElement pathIcon = new XElement("pathIcon", listButtons[i].pathIcon);
            XElement pathApp = new XElement("pathApp", listButtons[i].pathApp);
            XElement button = new XElement("Button");
            button.Add(id);
            button.Add(type);
            button.Add(isActive);
            button.Add(name);
            button.Add(pathIcon);
            button.Add(pathApp);
            buttons.Add(button);
        }
        buttons.Save(@"btemp");
        loadXmlButton();

    }

正如所建议的,最好使用与编写XML相同的LINQtoXMLAPI来读取XML。此外,
pathApp
是一个元素,而不是一个属性,因此您当前使用的旧API不正确

试着这样做:

var doc = XDocument.Load("btemp");

foreach (var button in doc.Root.Elements())
{
    var id = (int)button.Element("Button");
    var type = (string)button.Element("appType");
    var isActive = (bool)button.Element("isActive");
    ...
}

正如所建议的,最好使用与编写XML相同的LINQtoXMLAPI来读取XML。此外,
pathApp
是一个元素,而不是一个属性,因此您当前使用的旧API不正确

试着这样做:

var doc = XDocument.Load("btemp");

foreach (var button in doc.Root.Elements())
{
    var id = (int)button.Element("Button");
    var type = (string)button.Element("appType");
    var isActive = (bool)button.Element("isActive");
    ...
}

为什么要编写元素而读取属性?我还强烈建议您在读取时使用LINQ to XML,就像编写时一样。这是一个更好的XML API。为什么要编写元素却要读取属性?我还强烈建议您在读取时使用LINQ to XML,就像编写时一样。这是一个更好的XMLAPI。
var doc = XDocument.Load("btemp");

foreach (var button in doc.Root.Elements())
{
    var id = (int)button.Element("Button");
    var type = (string)button.Element("appType");
    var isActive = (bool)button.Element("isActive");
    ...
}