将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");
}
}
编辑:当代码改变我的旧回答变得无效。无论如何,我在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创建/更新来说,不太容易出错。
yes文件被加载我确实有上面的代码来加载xml文件。我复制并粘贴上面的代码错误,正在执行的if语句== == null,因此它被执行。问题在于代码avobe无法编辑XML文件。 – user1546315 2012-08-07 19:08:54
有趣?您可以将其添加到现有的XML文件中。如果我的XML文件被隐藏,它可能会成为一个问题吗? – user1546315 2012-08-07 19:28:08
它应该没关系。如果doc.Load()没有抛出异常,则会加载文件。你确认了代码,直到Save()方法被执行?如果它执行Save()没有exeption它应该更新文件。你能添加你的示例输入XML吗? – Varius 2012-08-07 19:31:48
请指定哪些实际上不起作用。你有checkDog,但你不使用它。是checkEvent真的!= null? – 2012-08-07 19:04:15
只是上面的代码不起作用。忽略其余。是的,我正在加载XML文件 – user1546315 2012-08-07 19:09:12
但现在你已经编辑了什么是checkEvent,使问题更模糊。当你调试时,你看到新元素出现在checkEvent下面吗? – 2012-08-07 19:12:40