将textbox1条目保存为xml

本文关键字:xml 保存 textbox1 | 更新日期: 2023-09-27 18:14:34

下面是我的代码:

 static void main(string[] args)
    {
        XmlDocument xmldoc = new XmlDocument();
        xmldoc.Load("data.XML");
        XmlNodeList userNodes = xmldoc.SelectNodes("data.XML");
        foreach (XmlNode userNode in userNodes) ;
    }
    private string id;
    private string APIkey;
    private string VCode;
    public string ID
    {
         get { return id; }
         set { id = Guid.NewGuid().ToString(); }
    }
    public string APIKEY
    {
        get { return APIkey; }
        set { APIkey = value; }
    }
    public string VCODE
    {
        get { return VCode; }
        set { VCode = value; }
    }
    public static void SaveData(object obj, string Filename)
    {
        XmlSerializer sr = new XmlSerializer(obj.GetType());
        TextWriter writer = new StreamWriter(Filename, true);
        sr.Serialize(writer, obj);
        writer.Close();
    }
}

这是我的按钮;

    private void button1_Click(object sender, EventArgs e)
   {
    {
       try
    {

        APISAVE info = new APISAVE();
        info.APIKEY = txtAPI.Text;
        info.VCODE = txtVerC.Text;
        info.ID = info.ID;
        APISAVE.SaveData(info, "data.XML");
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}

ok,我想做的是添加我在文本框中键入的内容以进入XML文件,但是当我再次这样做时,它会将其添加到XML而不是覆盖它。

我已经在谷歌上搜索了一段时间,读了很多东西,只是没有任何意义,我试过了。我现在请求一个善良的灵魂,请用婴儿的语言向我解释,这一切都是错的。

编辑

XML输出;

<?xml version="1.0" encoding="utf-8"?>
<Serialization xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<ID>91bb44be-d55e-40f6-83f7-8fb43d0a7321</ID>
<APIKEY>12</APIKEY>
<VCODE>12</VCODE>
</Serialization><?xml version="1.0" encoding="utf-8"?>
<Serialization xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<ID>c2a45a36-e7c8-4ac5-a37c-87c452db5807</ID>
<APIKEY>123</APIKEY>
<VCODE>123</VCODE>
 </Serialization>

另一个编辑:

using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Xml;
using System.Xml.Linq;
using System.Xml.Serialization;
using No_IdeaV2.API_Key_Window;
using System.IO;
namespace No_IdeaV2.API_Key_Window
{
public partial class UCAPIn : Form
{        
    public UCAPIn()
    {
        InitializeComponent();
    }
    private void label1_Click(object sender, EventArgs e)
    {
    }
    private void menuStrip1_ItemClicked(object sender,  ToolStripItemClickedEventArgs e)
    {
    }
    private void whatAmIDoingToolStripMenuItem_Click(object sender, EventArgs e)
    {
    }
    private void textBox1_TextChanged(object sender, EventArgs e)
    {
    }
    public List<Serialization> list = null;
    private void UCAPIn_Load(object sender, EventArgs e)
    {
        list = new List<Serialization>();
        var doc = XDocument.Load("data.XML");
        foreach (XElement element in doc.Descendants("Serialization"))
        {
            list.Add(new Serialization()
            { ID = element.Element("ID").Value, APIKEY = element.Element("APIKEY").Value, VCODE = element.Element("VCODE").Value });
        }
    }
    public void button1_Click(object sender, EventArgs e)
    {
        {
            try
            {
                Serialization info = new Serialization();
                info.APIKEY = txtAPI.Text;
                info.VCODE = txtVerC.Text;
                info.ID = Guid.NewGuid().ToString();
                list.Add(info);
                Serialization.SaveData(list, "data.XML");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
    }
    private void button2_Click(object sender, EventArgs e)
    {
        this.Close();
    }
    private void whatIsThisToolStripMenuItem_Click(object sender, EventArgs e)
    {
    }


        public class Serialization
    {
        private string id;
        private string APIkey;
        private string VCode;
        public string ID
        {
            get { return id; }
            set { id = value; }
        }
        public string APIKEY
        {
            get { return APIkey; }
            set { APIkey = value; }
        }
        public string VCODE
        {
            get { return VCode; }
            set { VCode = value; }
        }
        public static void SaveData(List<Serialization> list, string      Filename)
        {
            XmlSerializer sr = new XmlSerializer(list.GetType());
            TextWriter writer = new StreamWriter(Filename, true);
            sr.Serialize(writer, list);
            writer.Close();
        }
    }
}

}

将textbox1条目保存为xml

这是我的完整代码,这是有效的:

namespace WinForms_CSharp
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }
        public  List<APISAVE> list = null;
        private void Form2_Load(object sender, EventArgs e)
        {
            list = new List<APISAVE>();
            if (File.Exists(Application.StartupPath + "''data.xml"))
            {
                var doc = XDocument.Load("data.XML");
                foreach (XElement element in doc.Descendants("APISAVE"))
                {
                    list.Add(new APISAVE() { ID = element.Element("ID").Value, APIKEY = element.Element("APIKEY").Value, VCODE = element.Element("VCODE").Value });
                }
            }
        }
        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                APISAVE info = new APISAVE();
                info.APIKEY = txtAPI.Text;
                info.VCODE = txtVerC.Text;
                info.ID = info.ID;
                list.Add(info);
                APISAVE.SaveData(list, "data.XML");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }       
    } // end of Form2 class
    public class APISAVE
    {
        private string id;
        private string APIkey;
        private string VCode;
        public string ID
        {
            get { return id; }
            set { id = Guid.NewGuid().ToString(); }
        }
        public string APIKEY
        {
            get { return APIkey; }
            set { APIkey = value; }
        }
        public string VCODE
        {
            get { return VCode; }
            set { VCode = value; }
        }
        public static void SaveData(List<APISAVE> list, string Filename)
        {
            File.Delete(Filename);
            XmlSerializer sr = new XmlSerializer(list.GetType());
            TextWriter writer = new StreamWriter(Filename, true);
            sr.Serialize(writer, list);
            writer.Close();
        }
    }
}

最简单的方法是加载、反序列化、添加、序列化和写入文件。您可以加载XML,在内存中序列化,并将序列化的对象注入XML,但这不是那么简单,我将让您自己弄清楚。

创建一个你喜欢的XML:

<RootObject>
    <NestedObject>
        <ID>1</ID>
        <VCODE>ABC123</VCODE>
        <APIKEY>xyz789</APIKEY>
    </NestedObject>
    <NestedObject>
        <ID>2</ID>
        <VCODE>ABC456</VCODE>
        <APIKEY>xyz456</APIKEY>
    </NestedObject>
</RootObject>

将其粘贴到Visual Studio中作为新类(Edit -> Paste Special -> Paste XML as classes),并在您的(反)序列化代码中使用它们:

public RootObject LoadData(string filename)
{
    using (XmlSerializer sr = new XmlSerializer(typeof(RootObject)))
    {
        TextReader reader = new StreamReader(filename);
        return (RootObject)sr.Deserialize(writer, obj);
    }
}
public RootObject SaveData(string filename, RootObject objectToSerialize)
{
    using (XmlSerializer sr = new XmlSerializer(typeof(RootObject)))
    {
        TextWriter writer = new StreamWriter(filename);
        sr.Serialize(writer, objectToSerialize);
    }
}

然后你可以加载或创建,然后修改RootObject实例:

// Load or instantiate
string xmlFileName = "yourfilename.xml";    
RootObject rootObject;
if (File.Exists(xmlFileName))
{
    rootObject = LoadData(xmlFileName);
}
else
{
    rootObject = new RootObject
    {
        NestedObject = new RootObjectNestedObject[]         
    };
}
// Modify
var nestedObjects = new List<RootObjectNestedObject>(rootObject.NestedObject);
nestedObjects.Add(new RootObjectNestedObject
{
    ID = 42,
    VCODE = "foo",
    APIKEY = "bar"
});
// Save
rootObject.NestedObject = nestedObjects.ToArray();
SaveData(xmlFileName, rootObject);