簡體   English   中英

如何使用C#從XML文件加載屬性

[英]How to load properties from XML file with C#

我有一個創建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 version="1.0" encoding="utf-8"?>
<Buttons>
  <Button>
    <Button>0</Button>
    <appType>None</appType>
    <isActive>false</isActive>
    <name />
    <pathIcon>Resources/add.png</pathIcon>
    <pathApp />
  </Button>
  <Button>
    <Button>1</Button>
    <appType>None</appType>
    <isActive>false</isActive>
    <name />
    <pathIcon>Resources/add.png</pathIcon>
    <pathApp />
  </Button>
etc...
</Buttons>

我試圖讀取每個節點的不同屬性(Button,appType,isActile),但是文檔對我沒有幫助。加載每個屬性的最佳方法是什么? 此代碼無效。

    public void loadXmlButton()
    {
        XmlDocument doc = new XmlDocument();
        doc.Load("btemp");
        foreach (XmlNode node in doc.DocumentElement.ChildNodes)
        {

                string s = node.Attributes["pathApp"]?.InnerText;
                Console.WriteLine(s);
        }
    }

如建議的那樣,最好使用與編寫XML相同的LINQ to XML API來讀取XML。 另外, pathApp是一個element ,而不是attribute ,因此您當前錯誤地使用了舊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");
    ...
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM