将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();
}
}
}
}
这是我的完整代码,这是有效的:
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);