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>

しかし、それは毎回最初のエンティティを置き換え、2番目のエントリのためのスペースを与えません

これに対する解決策を教えてください

これは私のコードです:

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

LINQToXMLを使用します。それははるかに柔軟です:

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 に答える