繁体   English   中英

将textbox1条目保存到xml中

[英]Save textbox1 entry into xml

这是我的代码:

 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);
    }
}

好的,我想做的是添加我在文本框中键入的内容,当我再次执行此操作时,将其添加到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();
        }
    }

}

}

这是我的完整代码,可以正常工作:

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中(编辑->选择性粘贴->将XML粘贴为类),并在反序列化代码中使用它们:

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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM