2013-11-26 30 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