2013-03-12 69 views
0

我已經創建了一個XML文件並完美保存。不幸的是,保存的文件不會載入我​​的表單加載事件。我試圖找出哪裏出了問題,但我仍然不知道如何加載它。你可以幫我嗎?在表單加載事件中加載保存的XML文件

這裏是我的窗體加載事件

string path = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); 

if (!Directory.Exists(path + "\\iproject")) 
{ 
    Directory.CreateDirectory(path + "\\iproject"); 
} 

if (!File.Exists(path + "\\iproject\\address.xml")) 
{ 
    File.Create(path + "\\iproject\\address.xml"); 
} 

XmlTextWriter xw = new XmlTextWriter(path + "\\iproject\\address.xml", Encoding.UTF8); 
xw.WriteStartElement("people"); 
xw.WriteEndElement(); 
xw.Close(); 

// load items wen form load event 
XmlDocument xdoc = new XmlDocument(); 
xdoc.Load(path + "\\iproject\\address.xml"); 
foreach (XmlNode xnode in xdoc.SelectNodes("people/person")) 
{ 
    person p = new person(); 
    p.name = xnode.SelectSingleNode("name").InnerText; 
    p.ipaddress = xnode.SelectSingleNode("ipaddress").InnerText; 
    people.Add(p); 
    listBox1.Items.Add(p.name); 
} 

這是我保存事件有關錯誤

XmlDocument xdoc = new XmlDocument(); // saving listview data to xml file 
string path = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); 
xdoc.Load(path + "\\iproject\\address.xml"); 
XmlNode xnode = xdoc.SelectSingleNode("people"); 
xnode.RemoveAll(); 

foreach (person p in people) 
{ 
    XmlNode xTop = xdoc.CreateElement("person"); 
    XmlNode xname = xdoc.CreateElement("name"); 
    XmlNode xipaddress = xdoc.CreateElement("ipaddress"); 

    xname.InnerText = p.name; 
    xipaddress.InnerText = p.ipaddress; 

    xTop.AppendChild(xname); 
    xTop.AppendChild(xipaddress); 
    xdoc.DocumentElement.AppendChild(xTop); 
} 

xdoc.Save(path + "\\iproject\\address.xml"); 
+0

你第一次嘗試加載XML文件,只是檢查如果你可以看到XML爲字符串? – Yahya 2013-03-12 14:27:05

+0

'RoshiEnd'我實際上建議你粘貼現有XML文件結構的副本,以便可以提供更多有效的答案和/或建議 – MethodMan 2013-03-12 14:36:34

回答

1

更多信息將是有益的。

但是,就我而言,我想說,即使文檔已經存在,當您加載時,您總是會編寫另一個「人物」元素。

你的第二條if語句在你的載入中應該是。

if (!File.Exists(path + "\\iproject\\address.xml")) 
    { 
     File.Create((path + "\\iproject\\address.xml")); 

     XmlTextWriter xw = new XmlTextWriter(path + "\\iproject\\address.xml", Encoding.UTF8); 
     xw.WriteStartElement("people"); 
     xw.WriteEndElement(); 
     xw.Close(); 
    }