我需要能够将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 :(得分: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创建/更新。