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中
上面的代码显示
<?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>
答案 0 :(得分:0)
不要使用嵌套的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);
}
}
}