2016-02-21 74 views
0

我有它創建一個XML文件的方法如何使用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> 

我試圖讀取每個節點的不同屬性(按鈕,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); 
     } 
    } 
+0

爲什麼你寫的元素,但讀書的屬性? – Dijkgraaf

+6

我也強烈建議您閱讀時使用的LINQ to XML,就像你寫的時候。這是一個更好的XML API。 –

回答

2

至於建議,你會好得多使用相同的LINQ to XML API像你一樣把它寫讀您的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"); 
    ... 
} 
相關問題