in src/TestFramework/Core/ConfigurationReader.cs [755:803]
private static void AppendOrOverrideChild(XmlNode newFather, XmlNode fatherOfChildren, string name)
{
Dictionary<string, XmlNode> dict = new Dictionary<string, XmlNode>();
string value = "";
foreach (XmlNode child in fatherOfChildren.ChildNodes)
{
if (child.NodeType == XmlNodeType.Element)
{
value = child.Attributes[name].Value;
try
{
dict.Add(value, child);
}
catch
{
throw new InvalidOperationException("Duplicate node with name \"" + name + "\"=\"" + value + "\" found.");
}
}
}
foreach (XmlNode child in dict.Values)
{
bool duplicate = false;
XmlNode old = null;
foreach (XmlNode xn in newFather.ChildNodes)
{
if (xn.NodeType != XmlNodeType.Element)
continue;
if (xn.Attributes[name].Value == child.Attributes[name].Value)
{
duplicate = true;
old = xn;
break;
}
}
if (duplicate)
{
newFather.ReplaceChild(child.CloneNode(true), old);
}
else
{
newFather.AppendChild(child.CloneNode(true));
}
}
dict.Clear();
}