我正在Windows窗体应用程序中创建一个示例登录表单&我正在尝试将我的登录用户名或密码保存在XML文件中,但是当我提交用户名或密码时,它会替换之前的条目。
我想要的是,当我提交用户名或密码时,它应该附加到同一个XML文件中,但不要替换之前的任何条目。
像:
<Table>
<Entry>
<User>first_user1@gmail.com</User>
<Password>*********</Password>
</Entry>
</Table>
<Table>
<Entry>
<User>second_user2@gmail.com</User>
<Password>*********</Password>
</Entry>
</Table>
但它每次都取代了第一次,而没有为第二次进入提供空间
请给我解决方案
这是我的代码:
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 :(得分:0)
使用LINQ To 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");
所以,如果您的文件是:
<Table>
<Entry>
<User>first_user1@gmail.com</User>
<Password>*********</Password>
</Entry>
</Table>
你得到一个输出:
<?xml version="1.0" encoding="utf-8"?>
<Table>
<Entry>
<User>first_user1@gmail.com</User>
<Password>*********</Password>
</Entry>
<Entry>
<User>newuser</User>
<Password>newpassword</Password>
</Entry>
</Table>