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); }