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

时间:2012-08-07 18:51:28

标签: c# 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");
                            }
                        }

1 个答案:

答案 0 :(得分:1)

编辑:随着代码的更改,我的旧答案变得无效。无论如何,我在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创建/更新。