将数据保存到XML文件时出现问题 [英] Problem in saving data to an XML file

查看:90
本文介绍了将数据保存到XML文件时出现问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在用C#编写程序,将一些数据保存到XML文件中。我有3个问题。



1.我正在尝试将我的帐户详细信息保存在XML文件中。我要保存的数据是帐户名,用户名,密码和附加信息(多行)。但我不知道如何正确地将数据安排到XML元素中。我需要一些帮助。



2.我使用下面的代码将数据保存到XML文件中。但是当我尝试保存另一条记录时,它会从XML文件中删除现有数据,然后添加新记录。所以现在我只有一个记录。我该如何解决?



  private   void  button1_Click( object  sender,EventArgs e)
{
if (Functions.SavetoXML(textBox1.Text,textBox2.Text,textBox3.Text,textBox4.Text)== true
{
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true ;

XmlWriter writer = XmlWriter.Create( Passwords.rar,设置);
writer.WriteStartDocument();
writer.WriteComment( 此文件由PasswordSave生成。);
writer.WriteStartElement( Account);
writer.WriteElementString( 名称 + textBox1.Text);
writer.WriteElementString( 用户名 + textBox2.Text);
writer.WriteElementString( 密码 + textBox3.Text);
// writer.WriteStartElement(Additinal Info,+ textBox4.Text);
writer.WriteEndElement();
writer.WriteEndDocument();

writer.Flush();
writer.Close();
MessageBox.Show( 信息已保存! 完成,MessageBoxButtons.OK,MessageBoxIcon.Information);
}
}



3.保存其他信息时,我必须在XML元素中保存多行信息,我该如何实现?



谢谢。

解决方案

你可以用Write CDATA ....

 writer.WriteElementString(  AdditinalInfo); 

// 写CDATA。
writer.WriteCData(< span class =code-string> 在这里写下你的多行文字);


根据以上描述,您似乎需要在XML文件中附加帐户详细信息,以便您可以按照您的工作方式执行此操作:

using System .Xml.Linq;

private void button1_Click(object sender,EventArgs e)
{
string _File =C:/Test.XML;
if(!File.Exists(_File))
{
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
XmlWriter writer = XmlWriter.Create(_File,settings);
writer.WriteStartDocument();
writer.WriteComment(此文件由PasswordSave生成。);
writer.WriteStartElement(Accounts);
writer.WriteStartElement(Account);
writer.WriteElementString(Name,+ textBox1.Text);
writer.WriteElementString(Username,+ textBox2.Text);
writer.WriteElementString(Password,+ textBox3.Text);
writer.WriteEndElement();
writer.WriteEndElement();
writer.Close();

}
else
{
帐户(_File,textBox1.Text,textBox2.Text,textBox3.Text);
}
}

public void帐户(字符串文件,字符串名称,字符串用户名,字符串密码)
{
XDocument doc = XDocument.Load(文件);
XElement xeName = new XElement(Account,new XElement(Name,name),new XElement(Username,Username),new XElement(Password,Password));
doc.Element(Accounts)。Add(xeName);
doc.Save(file);
}





我建议使用XmlDocument或XDocument类来创建XML而不是XmlWriter.It将简化您的XML工作:)


Hi, I'm coding a program in C# to save some data in to an XML file. I have 3 questions.

1. I'm trying to save my account details in the XML file. The data I want to save is, Account name, Username, Password and Additional info(multiple lines). But I don't know how to arrange the data correctly in to XML elements. I need some help with that.

2. I'm using below code to save data to the XML file. But when I try to save another record, it deletes the existing data from the XML file and then add the new record. So now I have only one record. How do I fix it?

private void button1_Click(object sender, EventArgs e)
        {
            if (Functions.SavetoXML(textBox1.Text, textBox2.Text, textBox3.Text, textBox4.Text) == true) 
            {
                XmlWriterSettings settings = new XmlWriterSettings();
                settings.Indent = true;

                XmlWriter writer = XmlWriter.Create("Passwords.rar", settings);
                writer.WriteStartDocument();
                writer.WriteComment("This file is generated by PasswordSave.");
                writer.WriteStartElement("Account");
                writer.WriteElementString("Name", "" + textBox1.Text);
                writer.WriteElementString("Username", "" + textBox2.Text);
                writer.WriteElementString("Password", "" + textBox3.Text);
               // writer.WriteStartElement("Additinal Info", "" + textBox4.Text);
                writer.WriteEndElement();
                writer.WriteEndDocument();

                writer.Flush();
                writer.Close();
                MessageBox.Show("Information Saved!", "Done", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }


3. When saving additional info, I have to save multiple lines of information in a XML element how can I achieve that?

Thanks.

解决方案

You could use Write CDATA....

writer.WriteElementString("AdditinalInfo");

// Write CDATA.
writer.WriteCData("write your multi-line text here");


As per above description it seems u need to append account details in XML file so You can do this in this way as per your work:

using System.Xml.Linq;

private void button1_Click(object sender, EventArgs e)
        {
            string _File="C:/Test.XML";
            if (!File.Exists(_File))
            {
                XmlWriterSettings settings = new XmlWriterSettings();
                settings.Indent = true;
                XmlWriter writer = XmlWriter.Create(_File, settings);
                writer.WriteStartDocument();
                writer.WriteComment("This file is generated by PasswordSave.");
                writer.WriteStartElement("Accounts");
                writer.WriteStartElement("Account");
                writer.WriteElementString("Name", "" + textBox1.Text);
                writer.WriteElementString("Username", "" + textBox2.Text);
                writer.WriteElementString("Password", "" + textBox3.Text);
                writer.WriteEndElement();
                writer.WriteEndElement();
                writer.Close();
              
            }
            else
            {
                Account(_File, textBox1.Text,textBox2.Text,textBox3.Text);
            }
      }

public void Account(string file,string name, string Username, string Password)
        {
           XDocument doc = XDocument.Load(file);
           XElement xeName = new XElement("Account", new XElement("Name", name), new                XElement("Username", Username), new XElement("Password", Password));
           doc.Element("Accounts").Add(xeName);
           doc.Save(file);
        }



I Suggest use XmlDocument or XDocument classes to create XML as well instead of XmlWriter.It will ease your XML working.:)


这篇关于将数据保存到XML文件时出现问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆