2012-09-21 49 views
1

我创建一个样本登录表单在Windows窗体应用程序&我想救我的登录用户名或密码的XML文件,但是当我提交的用户名或密码,它取代了以前的条目。如何防止在XML文件替换以前的数据

我想要的是,当我提交的用户名或密码,它应该被追加到同一个XML文件,但不替代任何以前项目。

像:

<Table> 
    <Entry> 
    <User>[email protected]</User> 
    <Password>*********</Password> 
    </Entry> 
</Table> 

<Table> 
    <Entry> 
    <User>[email protected]</User> 
    <Password>*********</Password> 
    </Entry> 
</Table> 

但它的每一次更换第一enty,而不是让对第二个条目的空间

请给我这个

该解决方案是我的代码:

private void button1_Click(object sender, EventArgs e) 
{ 
XmlTextWriter writer = new XmlTextWriter("entry.xml", System.Text.Encoding.UTF8); 
     writer.WriteStartDocument(true); 
     writer.Formatting = Formatting.Indented; 
     writer.Indentation = 2; 
     writer.WriteStartElement("Table"); 
     createNode(textBox1.Text, textBox2.Text, writer); 
     writer.WriteEndElement(); 
     writer.WriteEndDocument(); 
     writer.Close(); 
     MessageBox.Show("XML File created ! "); 

}

private void createNode(string pName, string pPass, XmlTextWriter writer) 
{ 
    writer.WriteStartElement("Entry"); 
    writer.WriteStartElement("User"); 
    writer.WriteString(pName); 
    writer.WriteEndElement(); 
    writer.WriteStartElement("Password"); 
    writer.WriteString(pPass); 
    writer.WriteEndElement(); 
    writer.WriteEndElement(); 
} 

回答

0

使用LINQ到XML。它更灵活:

private void AddEntry(XElement xml, string user, string password) 
{ 
    xml.Add(new XElement("Entry", 
         new XElement("User", user), 
         new XElement("Password", password))); 
} 

然后

XElement x = XElement.Load("In.xml"); 
AddEntry(x, "newuser", "newpassword"); 
x.Save("In.xml"); 

所以,如果你的文件是:使用UR我的代码

<?xml version="1.0" encoding="utf-8"?> 
<Table> 
    <Entry> 
    <User>[email protected]</User> 
    <Password>*********</Password> 
    </Entry> 
    <Entry> 
    <User>newuser</User> 
    <Password>newpassword</Password> 
    </Entry> 
</Table> 
+0

<Table> <Entry> <User>[email protected]</User> <Password>*********</Password> </Entry> </Table> 

你得到一个输出正在此错误 “的类型或命名空间名称的XElement'找不到(是否缺少using指令或程序集引用?)” –

+0

@ user1687470添加以下内容:使用System.Xml.Linq的;.您的项目必须至少在.Net3.5上 – horgh

相关问题