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("&", "&amp");
                    string strx = s2;
                    string str3 = strx.Replace("&", "&amp");
                    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>

C#文本框,用于在XML上保存数据

不要使用嵌套的foreach循环。相反,使用单个for循环来访问两个集合(splitsplit2(中相同索引的项:

//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("&", "&amp");
            string strx = s2;
            string str3 = strx.Replace("&", "&amp");
            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);
            }
        }
}