Changeset 849 for trunk/tools/ConfigMerger/ConfigMerger.cs
- Timestamp:
- 11/28/08 02:30:13 (16 years ago)
- File:
-
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
trunk/tools/ConfigMerger/ConfigMerger.cs
r848 r849 24 24 using System.Linq; 25 25 using System.Text; 26 using System.Xml; 26 27 27 28 namespace HeuristicLab.Tools.ConfigMerger { 28 class Program { 29 static void Main(string[] args) { 29 public class ConfigMerger { 30 public static void Main(string[] args) { 31 try { 32 Merge(args[0], args[1]); 33 } 34 catch (Exception ex) { 35 Console.Out.WriteLine(ex.Message); 36 } 37 } 38 39 public static void Merge(string sourceFile, string destinationFile) { 40 XmlDocument source = new XmlDocument(); 41 source.Load(sourceFile); 42 XmlDocument destination = new XmlDocument(); 43 destination.Load(destinationFile); 44 45 XmlNode sourceNode; 46 XmlNode destinationNode; 47 48 sourceNode = source.SelectSingleNode("/configuration/configSections/sectionGroup[@name='applicationSettings']"); 49 destinationNode = destination.SelectSingleNode("/configuration/configSections/sectionGroup[@name='applicationSettings']"); 50 Merge(sourceNode, destinationNode, destination, "/configuration/configSections"); 51 52 sourceNode = source.SelectSingleNode("/configuration/configSections/sectionGroup[@name='userSettings']"); 53 destinationNode = destination.SelectSingleNode("/configuration/configSections/sectionGroup[@name='userSettings']"); 54 Merge(sourceNode, destinationNode, destination, "/configuration/configSections"); 55 56 sourceNode = source.SelectSingleNode("/configuration/applicationSettings"); 57 destinationNode = destination.SelectSingleNode("/configuration/applicationSettings"); 58 Merge(sourceNode, destinationNode, destination, "/configuration"); 59 60 sourceNode = source.SelectSingleNode("/configuration/userSettings"); 61 destinationNode = destination.SelectSingleNode("/configuration/userSettings"); 62 Merge(sourceNode, destinationNode, destination, "/configuration"); 63 64 destination.Save(destinationFile); 65 } 66 67 private static void Merge(XmlNode source, XmlNode destination, XmlDocument document, string root) { 68 if (source != null) { 69 if (destination == null) { 70 XmlNode clone = document.ImportNode(source, true); 71 document.SelectSingleNode(root).AppendChild(clone); 72 } else { 73 foreach (XmlNode node in source.ChildNodes) { 74 XmlNode clone = document.ImportNode(node, true); 75 destination.AppendChild(clone); 76 } 77 } 78 } 30 79 } 31 80 }
Note: See TracChangeset
for help on using the changeset viewer.