2013-03-12 72 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(); 
    }