现在有一个XML文件把它当作模板可向它里面添加节点,但当我点击保存按钮把文件存进数据库后,该怎样还原回模板?(即没有添加节点之前的样子),新手,请说详细点.谢谢
模板为:
<root>
<element Name="F2" Description="记实测评" Score="5">
<element2 Name="F21" DesCription="必修项" Score="5">
<element3 Name="F211" Description="上课出勤情况" Score="0">
</element3>
<element3 Name="F212" Description="班集体活动参与情况" Score="0">
</element3>
<element2 Name="F22" DesCription="选修与附加项" Score="0">
现在要添加节点:
<root>
<element Name="F2" Description="记实测评" Score="10">
<element2 Name="F21" DesCription="必修项" Score="0">
<element3 Name="F211" Description="上课出勤情况" Score="0">
</element3>
<element3 Name="F212" Description="班集体活动参与情况" Score="0">
</element3>
<element2 Name="F22" DesCription="选修与附加项" Score="10">
<element3 Name="F221" Description="全国三好学生" ContentID="1" Score="6" />
<element3 Name="F221" Description="省级三好学生" ContentID="1" Score="4" />
</element2>
</element>
</root>
模板为:
<root>
<element Name="F2" Description="记实测评" Score="5">
<element2 Name="F21" DesCription="必修项" Score="5">
<element3 Name="F211" Description="上课出勤情况" Score="0">
</element3>
<element3 Name="F212" Description="班集体活动参与情况" Score="0">
</element3>
<element2 Name="F22" DesCription="选修与附加项" Score="0">
现在要添加节点:
<root>
<element Name="F2" Description="记实测评" Score="10">
<element2 Name="F21" DesCription="必修项" Score="0">
<element3 Name="F211" Description="上课出勤情况" Score="0">
</element3>
<element3 Name="F212" Description="班集体活动参与情况" Score="0">
</element3>
<element2 Name="F22" DesCription="选修与附加项" Score="10">
<element3 Name="F221" Description="全国三好学生" ContentID="1" Score="6" />
<element3 Name="F221" Description="省级三好学生" ContentID="1" Score="4" />
</element2>
</element>
</root>
解决方案 »
- objectDataSource使用Deleting事件进行删除校验?
- html危险代码以及不合理的代码过滤的问题
- 把数据从程序里导入到Excel里,Excel里面出现的是乱码,这个问题怎么解决???
- 求教页面之间参数的传递
- webservice 问题
- 请教各位大虾GG,帮帮我!!!
- 请问坛子里有没有现在还有用asp.net(vb)开发的朋友啊?有的话请留下你们的QQ,咱们交个朋友,以后多交流交流!(会的也行)
- 引用C#类中的方法出错???
- 如何在程序中隐藏水晶报表的一个Section?
- 谁能给个项目?.net
- 如何在火狐浏览器中和Netscape实现。IE中的window.showModalDialog()
- 验证提交机制问题
XmlDataDocument XD = new XmlDataDocument();
XD.Load(Server.MapPath("模板.xml"));
//....XML操作。
//然后保存的时候
XD.Save(Server.MapPath("结果.xml"));
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("model.xml");
XmlDocument tempXml = new XmlDocument();
XmlNode node = xmlDoc.CloneNode(true);
tempXml.LoadXml(node.InnerXml);
//……对tempXml的操作
//……
//tempXml.Save("C:\\tempModel.xml"); //可以保存来看看
XmlDocument BackUpXml = new XmlDocument();//BackUpXml备份文件
BackUpXml.Load(Server.MapPath("~/XML/BackUp.xml"));
XmlDocument xmlDoc = new XmlDocument();
XmlNode node = BackUpXml.CloneNode(true);
xmlDoc.Load(node.InnerXml); //这里提示System.ArgumentException: 路径中具有非法字符
那应该是你的BackUpXml.Load(Server.MapPath("~/XML/BackUp.xml")); 这句的问题
可以直接写BackUpXml.Load(@"~/XML/BackUp.xml");
是不是(node.InnerXml)这里有问题呢?
protected void Button1_Click(object sender, EventArgs e)
{
XmlDocument BackUpXml = new XmlDocument();//BackUpXml备份文件
BackUpXml.Load(Server.MapPath("~/XML/BackUp.xml"));
XmlDocument xmlDoc = new XmlDocument();
XmlNode node = BackUpXml.CloneNode(true);
xmlDoc.Load(node.InnerXml); //这里提示System.ArgumentException: 路径中具有非法字符
XmlNodeList xnl = xmlDoc.SelectSingleNode("root").ChildNodes;
int attr = 0;
int attr2 = 0;
int f1 = 0;
string sum;
int allvalue = 0;
foreach (XmlNode xn in xnl)//遍历XML中属于root的每个节点
{
XmlElement xe = (XmlElement)xn;
XmlNodeList xnl1 = xe.ChildNodes;
foreach (XmlNode xn1 in xnl1)//遍历XML中属于F2的每个节点
{
XmlElement xe2 = (XmlElement)xn1;
XmlNodeList xnl2 = xe2.ChildNodes;
if (xe2.Attributes["Name"].Value != "F22")
{
continue;
}
else
{
DropDownList aDropdown1 = (DropDownList)GridView2.Rows[0].Cells[1].FindControl("DropDownList1");
DropDownList aDropdown2 = (DropDownList)GridView2.Rows[0].Cells[2].FindControl("DropDownList2");
int f = 0;
string aRank = aDropdown1.SelectedItem.ToString();
string aContent = aDropdown2.SelectedItem.ToString();
int aRankID;
int aContentID;
aRankID = Convert.ToInt32(aDropdown1.SelectedValue);
aContentID = Convert.ToInt32(aDropdown2.SelectedValue);
XmlElement xe3 = xmlDoc.CreateElement("element3");
xe3.SetAttribute("Name", "F221");
xe3.SetAttribute("Description", (aRank + aContent));
xe3.SetAttribute("ContentID", aContentID.ToString());
SqlConnection con = new SqlConnection("Data Source=DONG;Initial Catalog=eSchool_SynthesisEvaluation;User ID=sa;Password=123456"); SqlCommand cmd = new SqlCommand("select Mark From ContentRank where RankID=@aRankID and ContentID=@aContentID", con);
con.Open();
cmd.Parameters.AddWithValue("@aRankID", aRankID);
cmd.Parameters.AddWithValue("@aContentID", aContentID);
cmd.ExecuteNonQuery();
xe3.SetAttribute("Score", cmd.ExecuteScalar().ToString());
if (xn1.ChildNodes.Count != 0)
{
bool flag = false;
foreach (XmlNode xn2 in xnl2)
{
XmlElement xe4 = (XmlElement)xn2;
string aDescription = xe4.Attributes["Description"].Value;
if (aDescription == (aRank + aContent))
{
//在这里提示{不能重复添加该项}
flag = true;
break; } //else
//{
// ((XmlElement)xn1).AppendChild(xe3);
// TextBox1.Text += (aRank + aContent);
//}
}
if (flag == false)
{
((XmlElement)xn1).AppendChild(xe3);
TextBox1.Text += (aRank + aContent);
}
}
else
{
((XmlElement)xn1).AppendChild(xe3);
TextBox1.Text += (aRank + aContent);
}
}
}
foreach (XmlNode xn1 in xnl1)
{
//定义一个字典类
IDictionary<string, int> dictionary = new Dictionary<string, int>();
int avalue = 0;
XmlElement xe2 = (XmlElement)xn1;
XmlNodeList xnl2 = xe2.ChildNodes;
foreach (XmlNode xn2 in xnl2)
{
XmlElement xe3 = (XmlElement)xn2;
//int aContentID = Convert.ToInt32(xn2.Attributes["ContentID"].Value);
int score = int.Parse(xe3.GetAttribute("Score"));
string id = xe3.GetAttribute("ContentID");
if (dictionary.ContainsKey(id))
{
if (dictionary[id] < score)
{
dictionary[id] = score;
}
}
else
{
dictionary[id] = score; }
//avalue += dictionary[id]; //int score = int.Parse(element.GetAttribute("Score"));
//avalue += Convert.ToInt32(xn2.Attributes["Score"].Value); }
foreach (string key in dictionary.Keys)
{
avalue += dictionary[key];
}
xe2.Attributes["Score"].Value = avalue.ToString();
allvalue += Convert.ToInt32(xn1.Attributes["Score"].Value);
}
xe.Attributes["Score"].Value = allvalue.ToString();
} xmlDoc.Save(Server.MapPath("~/XML/NewXML.xml"));
}
和具体工作流程无关 我这里只是说复制xml文件的方法 应该没有问题的(在我这里运行正常)
或许是你的xml数据的原因