diff --git a/ICD.Common.Utils/Xml/XmlReaderExtensions.cs b/ICD.Common.Utils/Xml/XmlReaderExtensions.cs index 613a9c6..e7bd60f 100644 --- a/ICD.Common.Utils/Xml/XmlReaderExtensions.cs +++ b/ICD.Common.Utils/Xml/XmlReaderExtensions.cs @@ -115,7 +115,7 @@ namespace ICD.Common.Utils.Xml /// /// [PublicAPI] - public static void Recurse(this IcdXmlReader extends, Action callback) + public static void Recurse(this IcdXmlReader extends, Func callback) { if (extends == null) throw new ArgumentNullException("extends"); diff --git a/ICD.Common.Utils/Xml/XmlUtils.cs b/ICD.Common.Utils/Xml/XmlUtils.cs index 226bc1a..0f559f4 100644 --- a/ICD.Common.Utils/Xml/XmlUtils.cs +++ b/ICD.Common.Utils/Xml/XmlUtils.cs @@ -138,7 +138,7 @@ namespace ICD.Common.Utils.Xml /// /// [PublicAPI] - public static void Recurse(string xml, Action callback) + public static void Recurse(string xml, Func callback) { if (callback == null) throw new ArgumentNullException("callback"); @@ -152,7 +152,7 @@ namespace ICD.Common.Utils.Xml /// /// /// - private static void Recurse(string xml, Stack path, Action callback) + private static void Recurse(string xml, Stack path, Func callback) { if (path == null) throw new ArgumentNullException("path"); @@ -168,10 +168,11 @@ namespace ICD.Common.Utils.Xml path.Push(childReader.Name); string[] pathOutput = path.Reverse().ToArray(path.Count); - callback(new XmlRecursionEventArgs(xml, pathOutput)); - - foreach (string child in childReader.GetChildElementsAsString()) - Recurse(child, path, callback); + if (callback(new XmlRecursionEventArgs(xml, pathOutput))) + { + foreach (string child in childReader.GetChildElementsAsString()) + Recurse(child, path, callback); + } path.Pop(); }