public void Setup()
        {
            _xmlString1 = "<?xml version=\"1.0\" encoding=\"utf-8\"?><bar1>foo1</bar1>";
            _xmlString2 = "<?xml version=\"1.0\" encoding=\"utf-8\"?><bar2>foo2</bar2>";
            _xmlDoc1.LoadXml("<?xml version=\"1.0\" encoding=\"utf-8\"?><foo1>bar1</foo1>");
            _xmlDoc2.LoadXml("<?xml version=\"1.0\" encoding=\"utf-8\"?><foo2>bar2</foo2>");

            _inputXmls[0] = new InputXml {
                ChildElementName = "XML1"
            };
            _inputXmls[1] = new InputXml {
                ChildElementName = "XML2"
            };

            _input = new Input {
                InputXmls = _inputXmls, XmlRootElementName = "Root"
            };
        }
        protected override void Execute(NativeActivityContext context)
        {
            var result = GetExpandoFromXml(InputXml.Get(context), Descendant.Get(context));// as IDictionary<string, object>[];

            context.SetValue(Result, result);
        }
        protected override void Execute(NativeActivityContext context)
        {
            var result = GetExpandoFromXml(InputXml.Get(context), Descendant.Get(context));

            context.SetValue(Result, result as Array);
        }
        /// <summary>
        /// Runs the task as configured
        /// </summary>
        /// <returns>true if task has succeeded</returns>
        public override bool Execute()
        {
            if (InputXml.Length == 0)
            {
                Log.LogError($"{nameof(InputXml)} cannot be empty.");
                return(false);
            }

            if (File.Exists(TargetDocumentDirPath.ItemSpec))
            {
                Log.LogError($"{nameof(TargetDocumentDirPath)} must be a directory, not a file.");
                return(false);
            }

            if (File.Exists(SourceDocumentDirPath.ItemSpec))
            {
                Log.LogError($"{nameof(SourceDocumentDirPath)} must be a directory, not a file.");
                return(false);
            }

            if (!Directory.Exists(SourceDocumentDirPath.ItemSpec))
            {
                Log.LogError($"{nameof(SourceDocumentDirPath)} directory does not exist.");
                return(false);
            }

            var markdownSourceDocuments = Directory.EnumerateFiles(SourceDocumentDirPath.ItemSpec, "*.md")
                                          .Select(f => GetSourceDocument(f))
                                          .ToList();

            //try for several sources of header data
            IEnumerable <TransformationInput> sourceDocumentsToExecute = null;
            //check for YAML-header files
            var sourceDocsWithYaml = markdownSourceDocuments.Where(doc =>
                                                                   doc.Options != null
                                                                   );

            if (sourceDocsWithYaml.Count() > 0)
            {
                sourceDocumentsToExecute = sourceDocsWithYaml.Select(src
                                                                     => new TransformationInput()
                {
                    SourceDocument = src, InputXml = InputXml
                }
                                                                     );
            }

            if (sourceDocumentsToExecute == null)
            {
                //try check Readme file
                var readmeSourceDocument = markdownSourceDocuments.SingleOrDefault(src =>
                                                                                   Path.GetFileNameWithoutExtension(src.FileName)
                                                                                   .Equals("Readme", StringComparison.OrdinalIgnoreCase)
                                                                                   );
                if (readmeSourceDocument != null)
                {
                    sourceDocumentsToExecute = new[] {
                        new TransformationInput()
                        {
                            SourceDocument = readmeSourceDocument, InputXml = InputXml
                        }
                    };
                }
            }

            if (sourceDocumentsToExecute == null)
            {
                //try check for filename match
                var matchedNameInputs = markdownSourceDocuments.Join(
                    InputXml,
                    src => Path.GetFileNameWithoutExtension(src.FileName),
                    xml => Path.GetFileNameWithoutExtension(xml.ItemSpec),
                    (src, xml) => new TransformationInput()
                {
                    SourceDocument = src, InputXml = new[] { xml }
                }
                    );
                if (matchedNameInputs.Count() > 0)
                {
                    sourceDocumentsToExecute = matchedNameInputs;
                }
            }

            if (sourceDocumentsToExecute == null)
            {
                //try create dummies source file, use matching name to xml file
                sourceDocumentsToExecute = InputXml.Select(xml => new TransformationInput()
                {
                    InputXml       = new[] { xml },
                    SourceDocument = new SourceDocument()
                    {
                        Body     = string.Empty,
                        Options  = null,
                        FileName = Path.GetFileNameWithoutExtension(xml.ItemSpec)
                    }
                });
            }

            try
            {
                GenerateFiles(sourceDocumentsToExecute);
                return(true);
            }
            catch (Exception ex)
            {
                LoggedException = ex;
                Log.LogErrorFromException(ex);
            }
            return(false);
        }