1

我正在 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();
}
4

1 回答 1

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>
于 2012-09-21T00:47:12.833 回答