这是我的代码:
String CREATE_TABLE = "CREATE TABLE " + GROUP_CHAT_MESSAGE_TABLE_NAME + "("
+ ID + " INTEGER PRIMARY KEY,"
+ NAME + " TEXT,"
+ SURNAME + " TEXT ,"
+ MARKS + " INTEGER" + ")";
db.execSQL(CREATE_TABLE);
这是我的按钮;
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();
}
}
好的我想要做的是添加我在文本框中键入的内容以进入XML文件但是当我再次执行时它会将它添加到XML而不会覆盖它。
我一直在谷歌搜索一段时间并阅读大量的内容,这只是没有任何意义,我已经尝试过了。我现在要求一个善良的灵魂,请用婴儿语言向我解释这一切都是错的。
编辑
XML OUTPUT;
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 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>
}
答案 0 :(得分:0)
这是我的完整代码,这有效:
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();
}
}
}
答案 1 :(得分:0)
最简单的方法是加载,反序列化,添加,序列化和写入文件。您可以加载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中(编辑 - &gt;粘贴特殊 - &gt;粘贴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);