0
我在这个问题上看到了很多贴子,但似乎无法让我的C#代码正常工作。如何在添加新元素之前检查C#中是否存在XML元素?
基本上,我有一个XML文档,其中包含称为“颜色”的元素,我希望我的函数addColor为xml添加一个新的元素和值,如果它尚不存在。我知道硬编码是不好的做法,我打算改变它,我只需要首先解决这个问题。
我的问题是,为什么不是我的代码循环遍历每个“颜色”元素,并打破一旦当前元素值和函数的输入值之间匹配?
下面是我目前的XML文件:
<?xml version="1.0"?>
<configuration>
<color>Black</color>
<color>Brown</color>
<color>Gray</color>
<color>Orange</color>
<color>Pink</color>
<color>Purple</color>
<color>Red</color>
<color>White</color>
<color>Yellow</color>
</configuration>
我的代码如下所示:
public void addColor(string newColor)
{
XmlDocument document = new XmlDocument();
//adds child element to Make element
try
{
document.Load("C:\\Users\\tobiajj1\\Desktop\\XML_C#\\testDetailManager\\original.xml");
XmlNode root = document.DocumentElement;
XmlNodeList nodes = root.SelectNodes("configuration");
foreach (XmlNode node in nodes)
{
if (node.Value == newColor)
{
break;
}
}
XmlElement childElement = document.CreateElement("color");
childElement.InnerText = newColor;
XmlNode parentNode = document.SelectSingleNode("configuration");
parentNode.InsertAfter(childElement, parentNode.LastChild);
document.Save("C:\\Users\\tobiajj1\\Desktop\\XML_C#\\testDetailManager\\original.xml");
}//try
catch (XmlException e)
{
Console.WriteLine(e.Message);
Console.WriteLine("Exception object Line, pos: (" + e.LineNumber + "," + e.LinePosition + ")");
}//end catch
}//end addMake function
NUF,非常感谢你抽出时间来审查并纠正我的代码的时间。我的代码现在工作完美! – newToJava