internal bool GetXmlNode(out XmlNode outNode, bool forceCreate) { outNode = null; bool success = false; XmlNode parent; XmlNode node; XmlAttribute attr; // See if we can find it first _xmlNode = UserData.SelectSingleNode("./esUserData/Drivers/Driver[@Name='" + this._driverString + "']"); if (null == _xmlNode) { node = UserData.SelectSingleNode("./esUserData"); if (node == null) { node = UserData.CreateNode(XmlNodeType.Element, "esUserData", null); UserData.AppendChild(node); attr = _userData.CreateAttribute("Version"); attr.Value = esPlugIn.esVersion; node.Attributes.Append(attr); parent = node; } else { parent = node; } node = UserData.SelectSingleNode("./esUserData/Drivers"); if (node == null) { node = _userData.CreateNode(XmlNodeType.Element, "Drivers", null); parent.AppendChild(node); parent = node; } else { parent = node; } // By definition we have to create the driver because we checked first above ... node = _userData.CreateNode(XmlNodeType.Element, "Driver", null); parent.AppendChild(node); attr = _userData.CreateAttribute("Name"); attr.Value = this._driverString; node.Attributes.Append(attr); _xmlNode = node; } if (null != _xmlNode) { outNode = _xmlNode; success = true; } return(success); }