C#文本框,用于在XML上保存数据
本文关键字:XML 保存 数据 用于 文本 | 更新日期: 2023-09-27 17:58:21
private void button1_Click(object sender, EventArgs e)
{
string strFilename = "Student_" + Tools.IDStudent + ".xml";
XmlDocument xmlDoc = new XmlDocument();
string[] split = txtName.Text.Split(System.Environment.NewLine.ToCharArray());
string[] split2 =txtAddress.Text.Split(System.Environment.NewLine.ToCharArray());
foreach (string s in split)
foreach (string s2 in split2)
{
if (s != "")
if (s2 != "")
{
string str = s;
string str2 = str.Replace("&", "&");
string strx = s2;
string str3 = strx.Replace("&", "&");
if (File.Exists(strFilename))
{
xmlDoc.Load(strFilename);
XmlElement elmXML = xmlDoc.CreateElement("Student");
string strNewPending = "<Name>" + str2 + "</Name>"+
"<Address>" + str3 + "</Address>";
elmXML.InnerXml = strNewPending;
xmlDoc.DocumentElement.AppendChild(elmXML);
xmlDoc.Save(strFilename);
}
else
{
//if file is not found, create a new xml file*/
XmlTextWriter xmlWriter = new XmlTextWriter(strFilename, System.Text.Encoding.UTF8);
xmlWriter.Formatting = Formatting.Indented;
xmlWriter.WriteProcessingInstruction("xml", "version='1.0' encoding='UTF-8'");
xmlWriter.WriteStartElement(strFilename);
xmlWriter.Close();
xmlDoc.Load(strFilename);
XmlNode Clients = xmlDoc.DocumentElement;
XmlElement childNode = xmlDoc.CreateElement("Student");
XmlElement childNode2 = xmlDoc.CreateElement("Name");
XmlElement childNode3 = xmlDoc.CreateElement("Address");
XmlText Namex = xmlDoc.CreateTextNode("Name");
XmlText Addressx = xmlDoc.CreateTextNode("Address");
Namex.Value = str2;
Addressx.Value = str3;
Clients.AppendChild(childNode);
childNode.AppendChild(childNode2);
childNode.AppendChild(childNode3);
childNode2.AppendChild(Namex);
childNode3.AppendChild(Addressx);
xmlDoc.Save(strFilename);
}
}
}
}
我有两个文本框(txtName.text和txtAddress.text(
当我输入时,在txtName.text中
- 汤姆和杰瑞
- 米老鼠
当我输入时,在txtAddress.text中
- 卡通网络
- 动漫
上面的代码显示
<?xml version="1.0" encoding="UTF-8"?>
<Student_1.xml>
<Student>
<Name>Tom and Jerry</Name>
<Address>Cartoon Network</Address>
</Student>
<Student>
<Name>Tom and Jerry</Name>
<Status>Anime</Status>
</Student>
<Student>
<Name>Mickey Mouse</Name>
<Address>Cartoon Network</Address>
</Student>
<Student>
<Name>Mickey Mouse</Name>
<Address>Anime</Address>
</Student>
</Student_1.xml>
我该如何修改代码以仅显示此输出
<?xml version="1.0" encoding="UTF-8"?>
<Student_1.xml>
<Student>
<Name>Tom and Jerry</Name>
<Address>Cartoon Network</Address>
</Student>
<Student>
<Name>Mickey Mouse</Name>
<Status>Anime</Status>
</Student>
</Student_1.xml>
不要使用嵌套的foreach
循环。相反,使用单个for
循环来访问两个集合(split
和split2
(中相同索引的项:
//set maxIndex to length of the longest array
var maxIndex = (split.Length > split2.Length) ? split.Length : split2.Length;
for (int i = 0; i < maxIndex; i++)
{
//get item in index i from array split
var s = (split.Length>i) ? split[i] : "";
//get item in index i from array split2
var s2 = (split2.Length>i) ? split2[i] : "";
//the rest of code below remain untouched
if (s != "")
if (s2 != "")
{
string str = s;
string str2 = str.Replace("&", "&");
string strx = s2;
string str3 = strx.Replace("&", "&");
if (File.Exists(strFilename))
{
xmlDoc.Load(strFilename);
XmlElement elmXML = xmlDoc.CreateElement("Student");
string strNewPending = "<Name>" + str2 + "</Name>" +
"<Address>" + str3 + "</Address>";
elmXML.InnerXml = strNewPending;
xmlDoc.DocumentElement.AppendChild(elmXML);
xmlDoc.Save(strFilename);
}
else
{
//if file is not found, create a new xml file*/
XmlTextWriter xmlWriter = new XmlTextWriter(strFilename, System.Text.Encoding.UTF8);
xmlWriter.Formatting = System.Xml.Formatting.Indented;
xmlWriter.WriteProcessingInstruction("xml", "version='1.0' encoding='UTF-8'");
xmlWriter.WriteStartElement(strFilename);
xmlWriter.Close();
xmlDoc.Load(strFilename);
XmlNode Clients = xmlDoc.DocumentElement;
XmlElement childNode = xmlDoc.CreateElement("Student");
XmlElement childNode2 = xmlDoc.CreateElement("Name");
XmlElement childNode3 = xmlDoc.CreateElement("Address");
XmlText Namex = xmlDoc.CreateTextNode("Name");
XmlText Addressx = xmlDoc.CreateTextNode("Address");
Namex.Value = str2;
Addressx.Value = str3;
Clients.AppendChild(childNode);
childNode.AppendChild(childNode2);
childNode.AppendChild(childNode3);
childNode2.AppendChild(Namex);
childNode3.AppendChild(Addressx);
xmlDoc.Save(strFilename);
}
}
}