将XML数据添加到特定的父节点

问题描述:

我需要能够将XML数据添加到已经创建的父节点并将其放置在特定的父节点下。将XML数据添加到特定的父节点

有没有人有最好的方法来做到这一点的任何建议?

我使用XMLWriter来创建原始XML文件。

XmlDocument doc = new XmlDocument(); 
      doc.Load(filePath); 
      for (int counter=0; counter<registeredEventCount; counter++) 
      { 

       try 
       { 
        XmlNode checkEvent = doc.SelectSingleNode("Event/Event[@id='" + registeredArrayList[counter] + "']"); 
        if (checkEvent != null) 
        { 
         try 
         { 
          XmlNode checkDog = doc.SelectSingleNode("Event/Event[@id='" + registeredArrayList[counter] + "']/Dog[@id='" + ukcNumberArrayList[counter] + "']"); 

          if (checkDog == null) 
          { 



           XmlElement newDogId = doc.CreateElement("Dog"); 
           newDogId.SetAttribute("id", ukcNumberArrayList[counter].ToString()); 
           XmlElement newDogName = doc.CreateElement("dogName"); 
           newDogName.SetAttribute("id", dogNameArrayList[counter].ToString()); 
           XmlElement newDogBreed = doc.CreateElement("breed"); 
           newDogBreed.SetAttribute("id", breedArrayList[counter].ToString()); 
           checkEvent.AppendChild(newDogId); 
           newDogId.AppendChild(newDogName); 
           newDogId.AppendChild(newDogBreed); 
           doc.Save(filePath); 
          } 
          else 
          { 
           MessageBox.Show("You have already registered this dog for this specific event"); 
          } 
         } 
+0

请指定哪些实际上不起作用。你有checkDog,但你不使用它。是checkEvent真的!= null? – 2012-08-07 19:04:15

+0

只是上面的代码不起作用。忽略其余。是的,我正在加载XML文件 – user1546315 2012-08-07 19:09:12

+0

但现在你已经编辑了什么是checkEvent,使问题更模糊。当你调试时,你看到新元素出现在checkEvent下面吗? – 2012-08-07 19:12:40

编辑:当代码改变我的旧回答变得无效。无论如何,我在Visual Studio中测试了你的代码。有效。这是我输入xml文件:

<Event> 
    <Event id="0"> 

    </Event> 
</Event> 

输出:

<Event> 
    <Event id="0"> 
    <Dog id="1"> 
     <dogName id="2" /> 
     <breed id="3" /> 
    </Dog> 
    </Event> 
</Event> 

我的猜测是,你在你的XML文件和代码IFS一些错误,不执行。我认为XmlSerializer更好,并且对于简单的XML创建/更新来说,不太容易出错。

+0

yes文件被加载我确实有上面的代码来加载xml文件。我复制并粘贴上面的代码错误,正在执行的if语句== == null,因此它被执行。问题在于代码avobe无法编辑XML文件。 – user1546315 2012-08-07 19:08:54

+0

有趣?您可以将其添加到现有的XML文件中。如果我的XML文件被隐藏,它可能会成为一个问题吗? – user1546315 2012-08-07 19:28:08

+0

它应该没关系。如果doc.Load()没有抛出异常,则会加载文件。你确认了代码,直到Save()方法被执行?如果它执行Save()没有exeption它应该更新文件。你能添加你的示例输入XML吗? – Varius 2012-08-07 19:31:48