查找具有相同名称的现有节点并替换它

时间:2016-04-29 16:09:06

标签: c#

private void SaveFile()
{
   XmlDocument doc=new XmlDocument();
   doc.Load("C:\\Test.xml");

   XmlNode Buses=doc.SelectSingleNode("//Buses");
   XmlNode oldPlateNumber=doc.SelectSingleNode("//YES-6548");

   XmlElement PlateNumber=doc.CreateElement("DUS-456");
   XmlElement VIN=doc.CreateElement("VIN");
   VIN.InnerText=textBox1.Text;

   if(oldPlateNumber!=null)
   {
      Buses.ReplaceChild(PlateNumber,oldPlateNumber);
   }
   else
   {
      PlateNumber.AppendChild(VIN);
      Buses.AppendChild(PlateNumber);
   }
   doc.save("C:\\Test.xml"}

所以代码应该在名为Plate Number的Buses下创建一个元素,它有另一个名为VIN的子元素。

如果PlateNumber不存在,我想在PlateNumber下创建一个新元素。如果它存在,我想使用ReplaceChild重写PlateNumber。

奇怪的是,当我摆脱if子句时,Buses.ReplaceChild(PlateNumber,oldPlateNumber)替换现有节点。但是当我尝试检测节点是否存在时,VIN为空。

有人说明了这个原因吗?我在检测现有节点时做错了吗?

另外,我刚刚发现了LINQ。不再使用XmlDocument会更容易吗?

由于

编辑---------

当Buses.ReplaceChild在if子句中时 enter image description here

1 个答案:

答案 0 :(得分:1)

我觉得你在下一步之前忘了保存xml

{{1}}