2013-11-26 28 views
0

我有一个列表视图充满联系人和存储联系人的XML文件。主重置 - 清除列表视图和XML文件中的数据

我想创建一个按钮,它将作为一种主复位按钮。基本上,当按下按钮时,程序(数据)应该重置并且像第一次打开时一样 - 没有联系人应该在那里。所以,应该清除列表视图,并且应该从XML文件中删除数据。

这是我的XML文件(Contacts.xml)的样子:

<People> 
    <Person> 
    <Name>John</Name> 
    <Hometown>Washington</Hometown> 
    <Address>231 Main Street</Address> 
    <Birthday>130299511993682082</Birthday> 
    <Phone>555-555-555</Phone> 
    <Email>[email protected]</Email> 
    <AdditionalInfo>Skype: john.123</AdditionalInfo> 
    </Person> 
</People> 

...这里是ListView控件(ListView1的):

Listview

我知道如何清除列表视图,但我不知道如何“重置”XML文件。

任何想法?

@EDIT:

以下是我已经试过了,根据您的建议:

void MasterReset() 
    { 
     string path = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); 
     string phonebook_path = path + "\\Phonebook\\Contacts.xml"; 
     XmlDocument xDoc = new XmlDocument(); 
     xDoc.Load(phonebook_path); 
     XmlNode xNode = xDoc.SelectSingleNode("People"); 
     xNode.InnerXml = ""; 
     xDoc.Save(phonebook_path); 
     listView1.Clear(); 
    } 

但它不工作,当我再次加载应用程序 - 触点仍然存在。

+2

为什么你不只是保持1个主文件,它不包含“数据'(只有原始的XML)。然后,加载它(XDocument.Load)并将其保存在内存中并将其保存到一个新文件中,从而保持原始文件不变。 – Dave

+0

我真的很难明白你的意思,但没有成功。如果我想要重置设置,为什么我会保留原始文件?这样,我会有多个XML文件。每当用户按下主复位按钮时,它会创建一个新的XML文件?那是你在说什么? –

+0

有一个变量存储你的初始负载并将其保存到一个文件或保存在内存中 – liquidsnake786

回答

1

要清除在XML文件中的数据,你首先需要创建一个XmlDocument对象

using System.Xml; //Don't forget this 

XmlDocument doc = new XmlDocument(); 
doc.Load(Application.StartupPath + "/Contacts.xml"); 

接下来,你需要选择“人”节点和InnerXml设置为无,有效地清除节点。

XmlNode node = doc.SelectSingleNode("People"); 
node.InnerXml = ""; 

最后,您会希望将更改保存到文件中。

doc.Save(Application.StartupPath + "/Contacts.xml"); 

,如果你想了解更多有关如何使用XML的交互,来看看这些:
msdn article on the XmlDocument Class
msdn article on the Sytem.Xml Namespace

+0

请再次检查我的问题,我已更新它。 –

+0

检查xml文件并确保它确实没有被编辑过。此外,尝试在路径中的项目之间只使用一个斜线,不知道为什么有两个...... – Blue0500

+0

好吧,我明白你为什么使用双反斜杠。单反斜杠给出了有关转义序列的错误。相反,使用单个正斜杠,它们也适用于路径。反斜杠**可能是问题 – Blue0500