public void SolveRequestMessageSerializationTest() { byte[] byteArray = Encoding.UTF8.GetBytes("Test Byte Array"); var solveRequestMessage = new SolveRequestMessage("Problem Type", 122L, byteArray); var result = solveRequestMessage.SerializeToXml(); Assert.IsNotNull(result); Assert.AreNotEqual(0, result.Length); var xmlValidator = new XmlValidator(); var xsdSchemaFile = "SolveRequestMessage.xsd"; var xsdSchemaPath = Path.Combine(_xsdSchemasPath, xsdSchemaFile); var validationResult = xmlValidator.Validate(result, xsdSchemaPath, true); var errorsCount = validationResult.Errors.Count + validationResult.Warnings.Count; Assert.AreEqual(0, errorsCount); #region ExampleResult //<?xml version="1.0" encoding="utf-16"?> //<SolveRequest xmlns="http://www.mini.pw.edu.pl/ucc/"> // <ProblemType>Problem Type</ProblemType> // <SolvingTimeout>122</SolvingTimeout> // <Data>VGVzdCBCeXRlIEFycmF5</Data> //</SolveRequest> #endregion }
protected override async Task <bool> ValidateCatalogStreamAsync(Stream inputStream) { var schemeStream = Resources.UpdateValidator.ToStream(); var validator = new XmlValidator(schemeStream); return(await Task.FromResult(validator.Validate(inputStream))); }
internal static void ShowXmlEditor(Form1 form) { CustomRichTextBox pageTextBox = ProgramUtil.GetPageTextBox(form.pagesTabControl.SelectedTabPage); if (String.IsNullOrEmpty(pageTextBox.Text)) { ShowInfoBox(form, LanguageUtil.GetCurrentLanguageString("TextEmpty", className)); return; } String error; if (!XmlValidator.Validate(form, false, ValidationType.Schema, null, out error)) { ShowAlertBox(form, error); return; } XmlEditor fileRename = new XmlEditor { Owner = form }; fileRename.InitializeForm(); fileRename.Show(form); }
private void Validate(ArchiveXmlUnit archiveXmlUnit) { ReportFallbackOnBuiltInSchemas(archiveXmlUnit); string fileName = GetFileNameForReport(archiveXmlUnit); IEnumerable <string> validationErrorMessages; try { validationErrorMessages = new XmlValidator().Validate(archiveXmlUnit); } catch (Exception exception) { throw new ArkadeException( string.Format(Noark5Messages.ExceptionDuringXmlValidation, fileName, exception.Message), exception ); } foreach (string errorMessage in validationErrorMessages) { _testResults.Add(new TestResult(ResultType.Error, new Location(fileName), errorMessage)); } }
public CourseValidator(List <Slide> slides) { this.slides = slides; string schemaPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "schema.xsd"); xmlValidator = new XmlValidator(schemaPath); }
public void RegisterMessageSerializationTest() { var problemList = new List <string>() { "DVRP" }; var registerMessage = new RegisterMessage(EComponentType.TaskManager, 1, problemList); var result = registerMessage.SerializeToXml(); Assert.IsNotNull(result); Assert.AreNotEqual(0, result.Length); var xmlValidator = new XmlValidator(); var xsdSchemaFile = "RegisterMessage.xsd"; var xsdSchemaPath = Path.Combine(_xsdSchemasPath, xsdSchemaFile); var validationResult = xmlValidator.Validate(result, xsdSchemaPath, true); var errorsCount = validationResult.Errors.Count + validationResult.Warnings.Count; Assert.AreEqual(0, errorsCount); #region ExampleResult //<?xml version="1.0" encoding="utf-16"?> //<Register xmlns="http://www.mini.pw.edu.pl/ucc/"> // <Type>TaskManager</Type> // <SolvableProblems> // <ProblemName>DVRP</ProblemName> // </SolvableProblems> // <ParallelThreads>1</ParallelThreads> //</Register> #endregion }
/// <summary> /// Gets a list of semantic diagnostic marks for the provided script file /// </summary> /// <param name="scriptFile"></param> internal List <Diagnostic> GetSemanticMarkers(ScriptFile scriptFile) { List <Diagnostic> markers = new List <Diagnostic>(); XmlValidator xmlValidator = new XmlValidator(); if (xmlValidator.Validate(new Uri(scriptFile.FilePath), scriptFile.Contents) == false) { foreach (XmlError xmlError in xmlValidator.Errors) { markers.Add(new Diagnostic() { Code = xmlError.ErrorCode.ToString(), Message = xmlError.Message, Range = new Range() { Start = new Position() { Character = xmlError.Column, Line = xmlError.Line }, End = new Position() { Character = xmlError.Column, Line = xmlError.Line } }, Severity = DiagnosticSeverity.Error, Source = "xml" }); } } return(markers); }
public void should_produce_a_valid_xml() { var xmlValidator = new XmlValidator(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "SchemaSpecs.xsd"), NameSpace); var validationResult = xmlValidator.Validate(_result.ToString()); validationResult.Success.ShouldBeTrue(validationResult.FullMessageLog); }
public void DivideProblemMessageSerializationTest() { byte[] byteArray = Encoding.UTF8.GetBytes("Test Byte Array"); var divideProblemMessageMessage = new DivideProblemMessage("Problem Type", 123L, byteArray, 321L); var result = divideProblemMessageMessage.SerializeToXml(); Assert.IsNotNull(result); Assert.AreNotEqual(0, result.Length); var xmlValidator = new XmlValidator(); var xsdSchemaFile = "DivideProblemMessage.xsd"; var xsdSchemaPath = Path.Combine(_xsdSchemasPath, xsdSchemaFile); var validationResult = xmlValidator.Validate(result, xsdSchemaPath, true); var errorsCount = validationResult.Errors.Count + validationResult.Warnings.Count; Assert.AreEqual(0, errorsCount); #region ExampleResult //<?xml version="1.0" encoding="utf-16"?> //<DivideProblem xmlns="http://www.mini.pw.edu.pl/ucc/"> // <ProblemType>Problem Type</ProblemType> // <Id>123</Id> // <Data>VGVzdCBCeXRlIEFycmF5</Data> // <ComputationalNodes>321</ComputationalNodes> //</DivideProblem> #endregion }
private void PackageSelect(object sender, TreeViewEventArgs e) { String pack = e.Node.Text; toolStripComboBox1.Items[0] = pack; toolStripComboBox1.SelectedIndex = 0; String fullpath = Path.Combine(GlobalRegistry.Instance.Path, pack); String manifest = Path.Combine(fullpath, "package.xml"); if (File.Exists(manifest)) { XmlValidator xv = new XmlValidator(); Package package = xv.ValidateObject <Package>(manifest); m_CancelNav = false; if (package != null) { cBrowserDesc.DocumentText = package.Languages[0].Description; } else { cBrowserDesc.DocumentText = "Unable to load package info."; } } }
internal static void FormatXml(Form1 form, bool validationFirst = true, bool indentation = true) { XtraTabControl pagesTabControl = form.pagesTabControl; CustomRichTextBox pageTextBox = ProgramUtil.GetPageTextBox(pagesTabControl.SelectedTabPage); if (validationFirst && !XmlValidator.Validate(form, ValidationType.Schema, false)) { return; } int indentationNum = indentation ? 1 : 0; XmlDocument xd = new XmlDocument(); xd.LoadXml(pageTextBox.Text); //xd.LoadXml(EncodeHTMLTagsForXMLValidation(pageTextBox.Text)); StringBuilder builder = new StringBuilder(); using (StringWriter writer = new StringWriter(builder)) { using (XmlTextWriter xtw = new XmlTextWriter(writer)) { xtw.IndentChar = '\t'; xtw.Indentation = indentationNum; xtw.Formatting = Formatting.Indented; xd.WriteTo(xtw); } pageTextBox.SelectAll(); pageTextBox.SelectedText = builder.ToString(); //pageTextBox.SelectedText = DecodeHTMLTagsForXMLValidation(builder.ToString()); TextManager.RefreshUndoRedoExternal(form); } }
public void WhenNoGroupsExistValidatorReturnsZero() { string xml = @"<root><child><grandchild>hello</grandchild></child></root>"; XmlValidator validator = new XmlValidator(xml); Assert.IsTrue(validator.GroupNodes.Count == 0); }
public void RegisterResponseMessageSerializationTest() { var registerResponseMessage = new RegisterResponseMessage(123123123L, DateTime.Now); var result = registerResponseMessage.SerializeToXml(); Assert.IsNotNull(result); Assert.AreNotEqual(0, result.Length); var xmlValidator = new XmlValidator(); var xsdSchemaFile = "RegisterResponseMessage.xsd"; var xsdSchemaPath = Path.Combine(_xsdSchemasPath, xsdSchemaFile); var validationResult = xmlValidator.Validate(result, xsdSchemaPath, true); var errorsCount = validationResult.Errors.Count + validationResult.Warnings.Count; Assert.AreEqual(0, errorsCount); #region ExampleResult //<?xml version="1.0" encoding="utf-16"?> //<RegisterResponse xmlns="http://www.mini.pw.edu.pl/ucc/"> // <Id>123123123</Id> // <Timeout>2014-03-07T23:25:05.0728496+01:00</Timeout> //</RegisterResponse> #endregion }
public ActionResult SaveXmlListTest(TestListRedactorView view) { if (view.Ids != null) { foreach (var id in view.Ids) { view._XmlModel.Options.Single(x => x.Id == id).IsTrue = true; } } if (!XmlValidator.Validate(view._XmlModel)) { ViewBag.Errors = XmlValidator.ErrorList; view.Question = cx.Questions.Find(view.Question.Id); return(PartialView("Redactor", view)); } view = (TestListRedactorView)helper.SaveXmlQuestion(view); ViewBag.IsSaved = true; return(PartialView("Redactor", view)); }
public void XmlValidatorCorrectXmlTest() { var validator = new XmlValidator(); var validationResult = validator.Validate(@"..\..\Task1\Content\books.xml", @"Task1\Content\BooksScheme.xsd", "http://library.by/catalog"); Assert.IsTrue(validationResult); }
public void should_be_able_to_match_the_predefined_schema() { var xmlValidator = new XmlValidator(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "SchemaSpecs.xsd"), NameSpace); var validationResult = xmlValidator.Validate(_xmlToDeserialize.ToString()); validationResult.Success.ShouldBeTrue(validationResult.FullMessageLog); }
public void ShouldCreateErrorsIfXmlDoesNotValidateAgainstSchema() { var invalidAddml = _addml.Replace("dataset", "datasett"); var validationErrorMessages = new XmlValidator().Validate(invalidAddml, _addmlXsd); validationErrorMessages[0].Should().Contain("datasett"); }
public void ValidateProductXml() { string filePath = @"..\..\Utils\Xml\Serialization\TestData\SomeProduct.xml"; //validate xmltest vs the schema xmltest.xsd which was created based on the xmltest.xml XmlValidator xmlValidate = new XmlValidator(filePath, @"..\..\Utils\Xml\Serialization\TestData\Product.xsd"); Assert.AreEqual(xmlValidate.ValidateXmlFile(), false); }
/// <summary> /// Creates a TrueTypeFont from XML. /// </summary> /// <param name="xElement">An XElement that contains the XML representation of the TrueTypeFont.</param> /// <param name="system">The MiyagiSystem.</param> /// <returns> /// The newly created TrueTypeFont or null if the XML file is invalid. /// </returns> public static TrueTypeFont CreateFromXml(XElement xElement, MiyagiSystem system) { TrueTypeFont retValue; var xv = new XmlValidator(); if (xv.ValidateAgainstInternalSchema(xElement, "TrueTypeFont")) { // create the TrueTypeFont using the Name attribute retValue = new TrueTypeFont(xElement.Attribute("Name").Value) { FileName = (string)xElement.Element("FileName"), FontStyle = xElement.Element("FontStyle").Value.ParseEnum <SD.FontStyle>(), Resolution = (int)xElement.Element("Resolution"), Size = (int)xElement.Element("Size"), TabSize = xElement.Element("TabSize") != null ? (int)xElement.Element("TabSize") : 3, Tracking = xElement.Element("Tracking") != null ? (int)xElement.Element("Tracking") : 0, }; var leading = xElement.Element("Leading"); if (leading != null) { retValue.Leading = (int)leading; } var spaceWidth = xElement.Element("SpaceWidth"); if (spaceWidth != null) { retValue.SpaceWidth = (int)spaceWidth; } // get CodePoints IList <Range> codePoints; if (xElement.Element("CodePoints") == null) { codePoints = DefaultCodePoints; } else { codePoints = new List <Range>( from codePointNode in xElement.Descendants("CodePoint") let codePoint = new Range( (int)codePointNode.Element("First"), (int)codePointNode.Element("Last")) select codePoint); } retValue.codePoints = codePoints; CreateFont(system, retValue); } else { throw new XmlException("Invalid font XElement"); } return(retValue); }
public void TestValidXmlPassesValidation() { var validator = new XmlValidator(); var document = LoadXmlDocument(@"../../Validator/XmlTestData/ValidXmlFile.xml"); var result = validator.ValidateXml(document); Assert.IsTrue(result.Item1); Assert.AreEqual(0, result.Item2.Count()); }
public void TestXDocumentWithNoDataElementIsReportedAsAfailure() { var validator = new XmlValidator(); var document = LoadXmlDocument(@"../../Validator/XmlTestData/NoData.xml"); var result = validator.ValidateXml(document); Assert.IsFalse(result.Item1); Assert.AreEqual(Resources.NoDataElementsInDocument, result.Item2.First()); }
static void Main(string[] args) { var validator = new XmlValidator(); var result = validator.Validate(@"<?xml version=""1.0""?> <Product ProductID=""1"" xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xsi:noNamespaceSchemaLocation=""schema.xsd""> <ProductName>Chairs</ProductName> </Product>"); }
public void BeforeEachTest() { dialogService = new Mock <IDialogService>(MockBehavior.Strict); xsdSchemaValidator = new Mock <IXsdSchemaValidator>(MockBehavior.Strict); SetupApplicationForAddWorkbook(); validator = new XmlValidator(dialogService.Object, xsdSchemaValidator.Object); }
public void ConvertXmlToRss(string xmlFile, string schemaUri, string targetNamespace, out bool isConversionSuccessful, string userErrorFile = "") { if (!XmlValidator.IsXmlValid(@"..\..\..\books.xml", @"..\..\..\books.xsd", "http://library.by/catalog", @"..\..\..\error.txt")) { isConversionSuccessful = false; return; } isConversionSuccessful = true; }
public BaseFacturae() { var _schemas = new Dictionary <string, byte[]>(); _schemas.Add("http://www.facturae.es/Facturae/2007/v3.1/Facturae", System.Text.UTF8Encoding.UTF8.GetBytes(Properties.Resource.Facturaev3_1)); _schemas.Add("http://www.facturae.es/Facturae/2009/v3.2/Facturae", System.Text.UTF8Encoding.UTF8.GetBytes(Properties.Resource.Facturaev3_2)); _schemas.Add("xmldsig-core-schema.xsd", System.Text.UTF8Encoding.UTF8.GetBytes(Properties.Resource.xmldsig_core_schema)); _schemaSet = XmlValidator.CreateXmlSchemaSet(_Namespace(), _schemas); }
public void Test_Validate_ValidXml_ShouldReturnTrue() { var validator = new XmlValidator(); var success = validator.Validate("books_valid.xml", (lineNumber, linePosition, message) => { Console.WriteLine($"[{lineNumber}:{linePosition}] {message}"); }); Assert.AreEqual(true, success); }
public EckValidationResult Validate(ValidationRequest request) { try { try { request.XmlDocument = UTF8Encoding.UTF8.GetString(Convert.FromBase64String(request.XmlDocument)); } catch { } Trace.WriteLine(DateTime.Now + "-> START Generate request = " + request.Name); var validationResult = new EckValidationResult(); var validator = new XmlValidator(); validationResult.BrokenRules = validator.ValidateXml(request.XmlDocument, (ValidationProfile) Enum.Parse(typeof(ValidationProfile), request.Name, true)); if (validationResult.BrokenRules.Count > 0) { validationResult.IsValid = false; validationResult.Message = "Correct errors and then try again."; } else { validationResult.IsValid = true; validationResult.Message = "Your document is VALID!"; } Trace.WriteLine(DateTime.Now + "-> RETURN validationResult = " + validationResult.IsValid); Trace.WriteLine(DateTime.Now + "-> END Generate"); return(validationResult); } catch (Exception err) { Trace.WriteLine(DateTime.Now + "-> ERROR: " + err.Message); Trace.WriteLine(DateTime.Now + "-> END Validate"); return(new EckValidationResult { BrokenRules = new List <BrokenRule>(), IsValid = false, Message = "Server internal error!" }); } }
public void ValidateIncorrectFile() { var testXml = "<?xml version=\"1.0\" encoding=\"utf-8\"?><testElement xmlns=\"http://tempuri.org/XMLSchema.xsd\"><element1>element11</element1><element2>aaaa</element2></testElement>"; var testXsd = "<?xml version=\"1.0\" encoding=\"utf-8\"?><xs:schema targetNamespace=\"http://tempuri.org/XMLSchema.xsd\" elementFormDefault=\"qualified\" xmlns=\"http://tempuri.org/XMLSchema.xsd\" xmlns:mstns=\"http://tempuri.org/XMLSchema.xsd\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\"><xs:element name=\"testElement\"><xs:complexType><xs:sequence><xs:element name=\"element1\" type=\"xs:string\"/><xs:element name=\"element2\" type=\"xs:integer\"/></xs:sequence></xs:complexType></xs:element></xs:schema>"; var xmlValidator = new XmlValidator(); var result = xmlValidator.Validate(testXml, testXsd, false); var errorsCount = result.Errors.Count + result.Warnings.Count; Assert.AreNotEqual(errorsCount, 0); }
/// <summary> /// Loads a context by interpreting the specified document. The specified arguments will be properties in the context. /// </summary> /// <param name="xDocument">The document that is interpreted.</param> /// <param name="arguments">Initial properties.</param> /// <returns>The loaded context.</returns> public static RIContext Parse(XDocument xDocument, IDictionary <string, object> arguments = null) { var validator = new XmlValidator("context.xsd", "Runerne.Instantiation.Xml", Assembly.GetExecutingAssembly()); validator.Validate(xDocument); var xRoot = xDocument.Root; var context = Parse(xRoot, arguments); return(context); }
public void WhenTheValidatorIsCalledWithValidXmlTheErrorEventIsNotFired() { var customerSchema = xsdFilePaths.FirstOrDefault(w => w.ToLower().Contains("customersorders.xsd")); var customerXml = xmlFilePaths.FirstOrDefault(w => w.ToLower().Contains("customersorders.xml")); if (customerSchema == null) { Assert.Fail("CustomersOrders.xsd File Missing"); } if (customerXml == null) { Assert.Fail("CustomersOrders.xml File Missing"); } xmlSchemaReader = new XmlSchemaReader(fileSystem, memoryStreamFactory); var schema = xmlSchemaReader.ReadFromPath(customerSchema); var schemaSet = new XmlSchemaSet { XmlResolver = new XmlUrlResolver() }; schemaSet.Add(schema); if (schema == null) { Assert.Fail("Schema could not be loaded"); } var validator = new XmlValidator(memoryStreamFactory, fileSystem, null, null, null, null, null); var methodHasNotBeenCalled = true; var count = 0; validator.ErrorOccurred += async(s, e, c) => { await Task.Run(() => { methodHasNotBeenCalled = false; }); }; var res = validator.ValidateXmlFileAgainstSchemaAsync(customerXml, schemaSet, true).Result; while (count < 10) { Thread.Sleep(1000); if (methodHasNotBeenCalled) { break; } count++; } Assert.IsTrue(methodHasNotBeenCalled); }
/// <summary> /// Loads leagues at the beginning of the program. /// It sets cbLiga listbox. /// </summary> public void LoadInitialLeague() { LeagueChanged = true; string fileContent = null; // download list of leagues WebClient client = new WebClient(); bool connectionEstablished = false; while (connectionEstablished == false) { try { fileContent = client.DownloadString(BaseURI + LeaguesFileNameURI); connectionEstablished = true; } catch (WebException e) { MessageBox.Show("Error: " + e.Message); // Form f = new ChooseConnectionView(/* formely: this -- parameter */); // f.ShowDialog() changes this.BaseURI and the connection to the server is // repeated thanks to while cycle //if (f.ShowDialog() == DialogResult.Cancel) //{ // Environment.Exit(1); //} } } // validate the list of leagues XmlValidator xmlValidator = new XmlValidator(Properties.Resources.sokobanLeagues, fileContent); if (!xmlValidator.IsValidXml) { MessageBox.Show(xmlValidator.ValidationError); Environment.Exit(1); } //xmlLeagues = new XmlLeagues(fileContent); //cbLeague.Items.AddRange(xmlLeagues.GetLeaguesNames()); Random rnd = new Random(); // load random League for starters; it calls LoadLeague - it's EVENT !!! /* IsPermittedToChangeLeague = false; cbLeague.SelectedIndex = rnd.Next(0, xmlLeagues.Count - 1); IsPermittedToChangeLeague = true; actLeagueXml = xmlLeagues.GetLeagueXML(cbLeague.SelectedIndex + 1); actLeagueName = (string)cbLeague.Items[cbLeague.SelectedIndex]; */ }
private string RenderSpecificXML(KBUserDetailInfo currentUser, int documentId, int documentVersionId) { XmlValidator validator = new XmlValidator(); string fileName = string.Empty; string uiLanguage = currentUserOutputConfig.UILanguage; SourceFileInfo[] sfis = documentService.GetFiles(currentUser, documentId, documentVersionId); if (sfis != null && sfis.Length > 0) { ArrayList xmlBuffer = new ArrayList(); //先驗證延伸檔名 foreach (SourceFileInfo sfi in sfis) { if (validator.ValidateExtension(sfi.DisplayName)) { xmlBuffer.Add(sfi); } } //通過延伸檔名考驗的再驗證內容格式 for (int i = 0; i < xmlBuffer.Count; i++) { SourceFileInfo sfi = (SourceFileInfo)xmlBuffer[i]; string body = validator.GetFileBody(sfi.CurrentPath); bool validateXML = validator.ValidateXML(body, uiLanguage); if (validateXML) { string xslt = validator.DigXslt(body, uiLanguage); if (!string.IsNullOrEmpty(xslt)) { fileName = sfi.DisplayName; break; //碰到第一個通過的以下的就不再驗證了 } } } } return fileName; }
/// <summary> /// Check if the provided XML is valid according to @xmlScheme /// </summary> /// <param name="xmlScheme"></param> /// <param name="xmlInstance"></param> /// <returns></returns> public static bool IsXmlValid(string xmlScheme, string xmlInstance) { XmlValidator xmlSchemaValidator = new XmlValidator(); return xmlSchemaValidator.IsValid(null, xmlScheme, xmlInstance); }
private void PackageSelect(object sender, TreeViewEventArgs e) { String pack = e.Node.Text; toolStripComboBox1.Items[0] = pack; toolStripComboBox1.SelectedIndex = 0; String fullpath = Path.Combine(GlobalRegistry.Instance.Path, pack); String manifest = Path.Combine(fullpath, "package.xml"); if (File.Exists(manifest)) { XmlValidator xv = new XmlValidator(); Package package = xv.ValidateObject<Package>(manifest); m_CancelNav = false; if (package != null) { cBrowserDesc.DocumentText = package.Languages[0].Description; } else { cBrowserDesc.DocumentText = "Unable to load package info."; } } }
/// <summary> /// GetParameter() is used pretty widely. It's a generic "GetString" style routine /// which builds a string from text data as well as various instructions found in various /// xml files. /// /// This routine can not be overridden, but should be expanded as necessary while /// maintaining backwards compatibility to add necessary functionality. Should a /// particular tool need custom extensions, these can be added to GetCustomParameter(). /// </summary> /// /// <param name="ParameterName">XPath to search</param> /// <param name="Context">The XML to look at</param> /// <param name="Application">The Soap Message being processed</param> /// <param name="SoapNamespaceManager">The Namespace Manager for any Namespaced XPaths</param> /// /// <returns></returns> /// public string GetParameter(string ParameterName, XmlNode Context, XmlNode Application, XmlNamespaceManager SoapNamespaceManager) { string Result = ""; XmlNode TargetNode = null; // If a parameter is passed, target that XPath search, otherwise use the current context if (ParameterName != "") { TargetNode = Context.SelectSingleNode(ParameterName); } else { TargetNode = Context; } // Found no data so don't bother going on if (TargetNode == null) { return ""; } // Look at all children for data foreach (XmlNode ChildNode in TargetNode.ChildNodes) { try { // If this is an element which is (or represents) plain text, just copy that text to the results if ((ChildNode.NodeType == XmlNodeType.Text) || (ChildNode.NodeType == XmlNodeType.CDATA) || (ChildNode.NodeType == XmlNodeType.EntityReference)) { Result = Result + ChildNode.InnerText; } else if (ChildNode.NodeType == XmlNodeType.Element) { // Elements all need to be processed string Format = ""; string ChildText = ""; string XPath = ""; XmlNode XPathResultNode = null; XmlNodeList TempNodeListResult = null; XmlElement ChildElement = (XmlElement)ChildNode; switch (ChildNode.Name) { #region xpath // This runs an XPath against the Application and gets a single text result case "xpath": { XPath = GetParameter("", ChildElement, Application, SoapNamespaceManager).Trim(); switch (ChildElement.GetAttribute("index").ToLower()) { case "": case "first": case "1": // Optimizations for the first item XPathResultNode = Application.SelectSingleNode(XPath, SoapNamespaceManager); break; case "last": // The Last Item TempNodeListResult = Application.SelectNodes(XPath, SoapNamespaceManager); XPathResultNode = TempNodeListResult[TempNodeListResult.Count - 1]; break; default: // This Nth Item TempNodeListResult = Application.SelectNodes(XPath, SoapNamespaceManager); try { int Index = int.Parse(ChildElement.GetAttribute("index")); if (Index < 0) Index = TempNodeListResult.Count + Index; XPathResultNode = TempNodeListResult[Index]; } catch { XPathResultNode = null; } break; } if (XPathResultNode != null) { Result = Result + XPathResultNode.InnerText; } break; } #endregion #region node case "node": XPath = GetParameter("", ChildElement, Application, SoapNamespaceManager).Trim(); switch (ChildElement.GetAttribute("index").ToLower()) { case "": case "first": case "1": XPathResultNode = Application.SelectSingleNode(XPath, SoapNamespaceManager); break; case "last": TempNodeListResult = Application.SelectNodes(XPath, SoapNamespaceManager); XPathResultNode = TempNodeListResult[TempNodeListResult.Count - 1]; break; default: TempNodeListResult = Application.SelectNodes(XPath, SoapNamespaceManager); try { XPathResultNode = TempNodeListResult[int.Parse(ChildElement.GetAttribute("index"))]; } catch { XPathResultNode = null; } break; } if (XPathResultNode != null) { switch (ChildElement.GetAttribute("method").ToLower()) { case "inner": case "innerxml": Result = Result + XPathResultNode.InnerXml; break; case "innertext": Result = Result + XPathResultNode.InnerText; break; case "outer": case "outerxml": default: Result = Result + XPathResultNode.OuterXml; break; } } break; #endregion #region count case "count": XPath = GetParameter("", ChildElement, Application, SoapNamespaceManager).Trim(); Result = Result + Application.SelectNodes(XPath, SoapNamespaceManager).Count; break; #endregion #region machine case "machine": Result = Result + System.Net.Dns.GetHostName(); break; #endregion #region hash case "hash": Result = Result + System.Convert.ToBase64String(new System.Security.Cryptography.MD5CryptoServiceProvider().ComputeHash(System.Text.ASCIIEncoding.ASCII.GetBytes(GetParameter("", ChildElement, Application, SoapNamespaceManager).Trim().ToLower()))); break; #endregion #region date case "date": Format = ChildElement.GetAttribute("format"); if (Format == null || Format == "") Format = "yyyymmdd"; goto case "datetime"; #endregion #region time case "time": Format = ChildElement.GetAttribute("format"); if (Format == null || Format == "") Format = "hhnnss"; goto case "datetime"; #endregion #region datetime case "datetime": if (Format == null || Format == "") Format = ChildElement.GetAttribute("format"); if (Format == null || Format == "") Format = "yyyymmddhhnnss"; DateTime TargetDate; ChildText = GetParameter("", ChildElement, Application, SoapNamespaceManager); try { if (ChildText.Length == 14) { TargetDate = new DateTime( int.Parse(ChildText.Substring(0, 4)), int.Parse(ChildText.Substring(4, 2)), int.Parse(ChildText.Substring(6, 2)), int.Parse(ChildText.Substring(8, 2)), int.Parse(ChildText.Substring(10, 2)), int.Parse(ChildText.Substring(12, 2))); } else { TargetDate = DateTime.Parse(ChildText); } } catch { if ((ChildText != "") && (ChildText != null)) { try { TargetDate = new DateTime(int.Parse(ChildText.Substring(0, 4)), int.Parse(ChildText.Substring(4, 2)), int.Parse(ChildText.Substring(6, 2)), int.Parse(ChildText.Substring(8, 2)), int.Parse(ChildText.Substring(10, 2)), int.Parse(ChildText.Substring(12, 2))); } catch { TargetDate = DateTime.Now; } } else { TargetDate = DateTime.Now; } } Format = Format.Replace("yyyy", String.Format("{0:000#}", TargetDate.Year)); Format = Format.Replace("yy", String.Format("{0:0#}", TargetDate.Year % 100)); Format = Format.Replace("mm", String.Format("{0:0#}", TargetDate.Month)); Format = Format.Replace("dd", String.Format("{0:0#}", TargetDate.Day)); Format = Format.Replace("hh", String.Format("{0:0#}", TargetDate.Hour)); Format = Format.Replace("nn", String.Format("{0:0#}", TargetDate.Minute)); Format = Format.Replace("ss", String.Format("{0:0#}", TargetDate.Second)); Result = Result + Format; break; #endregion #region section case "section": if (CheckTests(ChildElement, Application, SoapNamespaceManager)) { string NewContext = GetParameter("context", ChildElement, Application, SoapNamespaceManager); if ((NewContext == "") || (Context == null)) { Result = Result + GetParameter("", ChildElement, Application, SoapNamespaceManager); } else { XmlDocument TempXml = new XmlDocument(); TempXml.LoadXml(NewContext); Result = Result + GetParameter("", ChildElement, TempXml, null); } } break; #endregion #region replace // This was a pretty heterosexually challenged element // It was too hard to document, so it was removed // // case "replace": // { // Xml.XmlNode TempDoc = Application.CloneNode(true); // XPath = GetParameter("location", ChildElement, Application, SoapNamespaceManager); // string NewText = GetParameter("newdata", ChildElement, Application, SoapNamespaceManager); // string XMLContext = GetParameter("context", ChildElement, Application, SoapNamespaceManager); // string Method = ChildElement.GetAttribute("method"); // string Index = ChildElement.GetAttribute("index"); // Xml.XmlDocument NewDoc = new Xml.XmlDocument(); // // Xml.NameTable ResultSoapNameTable = new Xml.NameTable(); // Xml.XmlNamespaceManager ResultSoapNamespaceManager = new Xml.XmlNamespaceManager(ResultSoapNameTable); // // ResultSoapNamespaceManager.AddNamespace(String.Empty, "urn:none"); // ResultSoapNamespaceManager.AddNamespace("soap", _SoapURN); // // Xml.XmlDocument ResultDoc = new Xml.XmlDocument(ResultSoapNameTable); // // if (Method.ToLower() == "xml") // NewDoc.LoadXml(NewText); // // if ((XMLContext == "") || (XMLContext == null)) // ResultDoc.LoadXml(Application.OuterXml); // else // ResultDoc.LoadXml(XMLContext); // // switch (Index.ToLower()) // { // case "first": // case "1": // { // Xml.XmlNode BadNode = ResultDoc.SelectSingleNode(XPath, SoapNamespaceManager); // if (Method == "xml") // BadNode.ParentNode.ReplaceChild(BadNode.OwnerDocument.ImportNode(NewDoc.DocumentElement, true), BadNode); // else // { // switch (BadNode.NodeType) // { // case Xml.XmlNodeType.Attribute: // ((Xml.XmlAttribute)BadNode).Value = NewText; // break; // default: // foreach (Xml.XmlNode BadChild in BadNode.ChildNodes) // BadNode.RemoveChild(BadChild); // BadNode.AppendChild(BadNode.OwnerDocument.CreateTextNode(NewText)); // break; // } // } // // break; // } // case "all": // case "*": // case "": // { // /* // if (Method == "xml") // Application.SelectSingleNode(XPath, SoapNamespaceManager).InnerXml = NewText; // else // Application.SelectSingleNode(XPath, SoapNamespaceManager).InnerText = NewText; // */ // break; // } // } // // Result = Result + TempDoc.OuterXml; // // break; // } #endregion #region text case "text": Result = Result + GetParameter("", ChildElement, Application, SoapNamespaceManager); break; #endregion #region format case "format": Result = Result + String.Format(ChildElement.GetAttribute("spec"), GetParameter("", ChildElement, Application, SoapNamespaceManager)); break; #endregion #region literal case "literal": Result = Result + ChildElement.InnerXml; break; #endregion #region encode case "encode": { switch (ChildElement.GetAttribute("method").ToLower()) { case "": case "url": Result = Result + System.Web.HttpUtility.UrlEncode(GetParameter("", ChildElement, Application, SoapNamespaceManager)); break; case "html": case "xml": Result = Result + System.Web.HttpUtility.HtmlEncode(GetParameter("", ChildElement, Application, SoapNamespaceManager)); break; case "attribute": case "att": Result = Result + System.Web.HttpUtility.HtmlAttributeEncode(GetParameter("", ChildElement, Application, SoapNamespaceManager)); break; case "base64": Result = Result + System.Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes(GetParameter("", ChildElement, Application, SoapNamespaceManager))); break; case "qp": case "quoted-printable": Result += QuotedPrintable.Encode(GetParameter("", ChildElement, Application, SoapNamespaceManager)); break; case "base32": { Result += Base32Encoder.Encode(System.Text.ASCIIEncoding.ASCII.GetBytes(GetParameter("", ChildElement, Application, SoapNamespaceManager))); break; } default: Result = Result + "Not Supported"; break; } break; } #endregion #region decode case "decode": { switch (ChildElement.GetAttribute("method")) { case "": case "url": Result = Result + System.Web.HttpUtility.UrlDecode(GetParameter("", ChildElement, Application, SoapNamespaceManager)); break; case "html": case "xml": case "attribute": case "att": Result = Result + System.Web.HttpUtility.HtmlDecode(GetParameter("", ChildElement, Application, SoapNamespaceManager)); break; case "base64": Result = Result + System.Text.Encoding.ASCII.GetString(System.Convert.FromBase64String(GetParameter("", ChildElement, Application, SoapNamespaceManager))); break; case "base32": { Result += System.Text.Encoding.ASCII.GetString(Base32Encoder.Decode(GetParameter("", ChildElement, Application, SoapNamespaceManager))); break; } default: Result = Result + "Not Supported"; break; } break; } #endregion #region regex case "regex": string MatchSpec = ChildElement.GetAttribute("match"); if (ChildElement.GetAttributeNode("replace") != null) { Result = Result + Regex.Regex.Replace(GetParameter("", ChildElement, Application, SoapNamespaceManager), MatchSpec, ChildElement.GetAttribute("replace")); } else { string sMatchData = GetParameter("", ChildElement, Application, SoapNamespaceManager); Regex.Match RegexMatches = Regex.Regex.Match(sMatchData, MatchSpec); if (RegexMatches.Success) { if (ChildElement.GetAttributeNode("capture") != null) { Result = Result + RegexMatches.Groups[ChildElement.GetAttribute("capture")]; } else { Result = Result + RegexMatches.Value; } } } break; #endregion #region switch/select case "switch": case "select": { XmlNode OldDataNode = ChildElement.SelectSingleNode("value"); string OldData = GetParameter("value", ChildElement, Application, SoapNamespaceManager).ToLower(); string NewResult = GetParameter("else", ChildElement, Application, SoapNamespaceManager); XmlNodeList Pairs = ChildElement.SelectNodes("case"); foreach (XmlElement Pair in Pairs) { foreach (XmlElement When in Pair.SelectNodes("when")) { if (OldDataNode == null) { if (CheckTests(When, Application, SoapNamespaceManager)) { NewResult = GetParameter("then", Pair, Application, SoapNamespaceManager); goto FoundResult; } } else { string PotentialMatch = GetParameter("", When, Application, SoapNamespaceManager).ToLower(); if (PotentialMatch == OldData) { NewResult = GetParameter("then", Pair, Application, SoapNamespaceManager); goto FoundResult; } } } } FoundResult: Result = Result + NewResult; break; } #endregion #region registry case "registry": string HiveName = GetParameter("hive", ChildElement, Application, SoapNamespaceManager); string Path = GetParameter("path", ChildElement, Application, SoapNamespaceManager); string RegKey = GetParameter("key", ChildElement, Application, SoapNamespaceManager); Microsoft.Win32.RegistryKey Hive = null; switch (HiveName.ToUpper()) { case "HKEY_CLASSES_ROOT": Hive = Microsoft.Win32.Registry.ClassesRoot; break; case "HKEY_CURRENT_CONFIG": Hive = Microsoft.Win32.Registry.CurrentConfig; break; case "HKEY_CURRENT_USER": Hive = Microsoft.Win32.Registry.CurrentUser; break; case "HKEY_DYN_DATA": Hive = Microsoft.Win32.Registry.DynData; break; case "HKEY_LOCAL_MACHINE": Hive = Microsoft.Win32.Registry.LocalMachine; break; case "HKEY_PERFORMANCE_DATA": Hive = Microsoft.Win32.Registry.PerformanceData; break; case "HKEY_USERS": Hive = Microsoft.Win32.Registry.Users; break; } Microsoft.Win32.RegistryKey TargetKey = Hive.OpenSubKey(Path); if (TargetKey != null) { Result = Result + (string)TargetKey.GetValue(RegKey); } break; #endregion #region xsl:stylesheet case "xsl:stylesheet": Result = Result + GetParameter("", Transform((XmlDocument)Application, ChildElement), Application, SoapNamespaceManager); break; #endregion #region debug case "debug": // Abel //string NewSegment = GetParameter("", ChildElement, Application, SoapNamespaceManager); //Result = Result + NewSegment; //Debug(ChildElement.GetAttribute("label"), NewSegment, DebugMessageType.User, ChildElement.GetAttribute("debugqueue")); //if (ChildElement.GetAttribute("label") != "") //{ // System.Console.Write(ChildElement.GetAttribute("label") + ": "); // System.Diagnostics.Debug.Write(ChildElement.GetAttribute("label") + ": "); //} //System.Console.WriteLine(NewSegment); //System.Diagnostics.Debug.WriteLine(NewSegment); break; #endregion #region encrypt case "encrypt": { byte[] Data = System.Text.ASCIIEncoding.ASCII.GetBytes(GetParameter("", ChildElement, Application, SoapNamespaceManager)); if (Data.Length > 0) { Cryptography.SymmetricAlgorithm Provider = null; switch (ChildElement.GetAttribute("method").ToLower()) { case "rc2": Provider = new Cryptography.RC2CryptoServiceProvider(); break; case "rijndael": Provider = new Cryptography.RijndaelManaged(); break; default: case "3des": case "tripledes": Provider = new Cryptography.TripleDESCryptoServiceProvider(); break; case "des": Provider = new Cryptography.DESCryptoServiceProvider(); break; } string Key = ChildElement.GetAttribute("key"); string IV = ChildElement.GetAttribute("iv"); if (Key == "") Key = DefaultEncryptionKey; if (ChildElement.GetAttribute("encoding").ToLower() == "base64") { Provider.Key = System.Convert.FromBase64String(Key); if (IV != "") Provider.IV = System.Convert.FromBase64String(IV); } else { Provider.Key = System.Text.ASCIIEncoding.ASCII.GetBytes(Key); Provider.IV = System.Text.ASCIIEncoding.ASCII.GetBytes(IV); } System.IO.MemoryStream DataStream = new System.IO.MemoryStream(); Cryptography.CryptoStream EncryptionStream = new System.Security.Cryptography.CryptoStream(DataStream, Provider.CreateEncryptor(), Cryptography.CryptoStreamMode.Write); EncryptionStream.Write(Data, 0, Data.Length); EncryptionStream.FlushFinalBlock(); DataStream.Seek(0, System.IO.SeekOrigin.Begin); byte[] DataBuffer = new byte[DataStream.Length]; DataStream.Read(DataBuffer, 0, (int)DataStream.Length); Result = Result + System.Convert.ToBase64String(DataBuffer); } break; } #endregion #region decrypt case "decrypt": { byte[] Data = System.Convert.FromBase64String(GetParameter("", ChildElement, Application, SoapNamespaceManager)); if (Data.Length > 0) { Cryptography.SymmetricAlgorithm Provider = null; switch (ChildElement.GetAttribute("method").ToLower()) { case "rc2": Provider = new Cryptography.RC2CryptoServiceProvider(); break; case "rijndael": Provider = new Cryptography.RijndaelManaged(); break; default: case "3des": case "tripledes": Provider = new Cryptography.TripleDESCryptoServiceProvider(); break; case "des": Provider = new Cryptography.DESCryptoServiceProvider(); break; } string Key = ChildElement.GetAttribute("key"); string IV = ChildElement.GetAttribute("iv"); if (Key == "") Key = DefaultEncryptionKey; if (ChildElement.GetAttribute("encoding").ToLower() == "base64") { Provider.Key = System.Convert.FromBase64String(Key); if (IV != "") Provider.IV = System.Convert.FromBase64String(IV); } else { Provider.Key = System.Text.ASCIIEncoding.ASCII.GetBytes(Key); Provider.IV = System.Text.ASCIIEncoding.ASCII.GetBytes(IV); } System.IO.MemoryStream DataStream = new System.IO.MemoryStream(); Cryptography.CryptoStream DecryptionStream = new System.Security.Cryptography.CryptoStream(DataStream, Provider.CreateDecryptor(), Cryptography.CryptoStreamMode.Write); DecryptionStream.Write(Data, 0, Data.Length); DecryptionStream.FlushFinalBlock(); DataStream.Seek(0, System.IO.SeekOrigin.Begin); byte[] DataBuffer = new byte[DataStream.Length]; DataStream.Read(DataBuffer, 0, (int)DataStream.Length); Result = Result + System.Text.ASCIIEncoding.ASCII.GetString(DataBuffer); } break; } #endregion #region code case "code": { Compilers.ICodeEngine Compiler = null; switch (ChildElement.GetAttribute("language").ToLower()) { case "vb": case "vb.net": case "visualbasic": case "visual basic": Compiler = new Compilers.VisualBasic(); break; case "": case "cs": case "c#": case "csharp": case "c-sharp": Compiler = new Compilers.CSharp(); break; default: // TODO: Abel // ReportError(Application.OwnerDocument, "GetParameter() - 'code' Element", "Language '" + ChildElement.GetAttribute("language") + "' not recognized"); break; } string[] Imports = new string[ChildElement.SelectNodes("assembly").Count + 1]; int I = 0; foreach (XmlElement AssemblyNode in ChildElement.SelectNodes("assembly")) { Imports[I++] = GetParameter("", AssemblyNode, Application, SoapNamespaceManager); } Imports[I] = "System.Xml.dll"; string Code = GetParameter("source", ChildElement, Application, SoapNamespaceManager); int CodeHash = Code.GetHashCode(); System.Reflection.Assembly TempAssembly = Compiler.Compile(Code, true, Imports); string ClassName = ChildElement.GetAttribute("class"); if (ChildElement.GetAttribute("class") == "") { if (TempAssembly.GetTypes().Length == 1) { ClassName = TempAssembly.GetTypes()[0].FullName; } else { // TODO: Abel // ReportError(Application.OwnerDocument, "GetParameter() - 'code' Element", "Ambiguous Which Class Should Be Used"); } } System.Type TempType = TempAssembly.GetType(ClassName); System.Reflection.ConstructorInfo CI = TempType.GetConstructor(new Type[] { typeof(XmlDocument), typeof(XmlNamespaceManager) }); if (CI != null) { object Temp = CI.Invoke(System.Reflection.BindingFlags.InvokeMethod, null, new object[2] { Application.OwnerDocument, SoapNamespaceManager }, null); Result += Temp.ToString(); } else { CI = TempType.GetConstructor(Type.EmptyTypes); if (CI != null) { Result += CI.Invoke(System.Reflection.BindingFlags.InvokeMethod, null, null, null).ToString(); } else { // TODO: Abel //ReportErrorNow((Application is XmlDocument ? (XmlDocument)Application : (Application != null ? Application.OwnerDocument : null)), "Appropriate Constructor Not Found", "No Appropriate Constructor Found in '" + ClassName + "'"); } } break; } #endregion #region guid case "guid": if (ChildElement.GetAttribute("type").ToLower() == "full") Result = Result + System.Guid.NewGuid().ToString(); else Result = Result + NewGuid; break; #endregion #region evaluate case "evaluate": { XPath = GetParameter("", ChildElement, Application, SoapNamespaceManager).Trim(); switch (ChildElement.GetAttribute("index").ToLower()) { case "": case "first": case "1": XPathResultNode = Application.SelectSingleNode(XPath, SoapNamespaceManager); break; case "last": TempNodeListResult = Application.SelectNodes(XPath, SoapNamespaceManager); XPathResultNode = TempNodeListResult[TempNodeListResult.Count - 1]; break; default: TempNodeListResult = Application.SelectNodes(XPath, SoapNamespaceManager); try { XPathResultNode = TempNodeListResult[int.Parse(ChildElement.GetAttribute("index"))]; } catch { XPathResultNode = null; } break; } if (XPathResultNode != null) { Result = Result + GetParameter("", XPathResultNode, Application, SoapNamespaceManager); } break; } #endregion #region validate /* * <validate> validates its innards for well-formedness or against a DTD or schema. * if the validation passes, the evaluated insides get passed right along * if the validation fails, an exception is thrown. * type should be "wellformed", "schema", or "dtd". defaults to "wellformed". * href is the schema or dtd location * for schema validation, the default namespace in the xml fragment will be the targetNamespace of the schema * for dtd validation, the dtd declaration is prepended to the xml fragment, and the root element is the doctype identifier * example: * <!-- dtd validation --> * <validate type="dtd" href="c:\testes.dtd"> * <literal> * <!-- comment to mess things up --> * <testes name="yo"> * <subtestes>hello</subtestes> * </testes> * </literal> * </validate> * the actual xml that will be validated is: * <!DOCTYPE testes SYSTEM 'c:\testes.dtd'> * <testes name="yo"> * <subtestes>hello</subtestes> * </testes> * * <!-- schema validation --> * <validate type="schema" href="c:\testes.xsd"> * <literal> * <!-- comment to mess things up --> * <testes name="yo"> * <subtestes>hello</subtestes> * </testes> * </literal> * </validate> * the actual xml that will be validated is: * <testes name="yo" xmlns="(the targetNamespace from c:\testes.xsd)"> * <subtestes>hello</subtestes> * </testes> */ case "validate": { string sValidationType = ChildElement.GetAttribute("type").ToLower().Trim(); if (sValidationType.Length == 0) { sValidationType = "wellformed"; } string sValidationDocument = ChildElement.GetAttribute("href").Trim(); string sXml = GetParameter("", ChildElement, Application, SoapNamespaceManager).Trim(); XmlValidator xvValidator = new XmlValidator(sXml, sValidationType, sValidationDocument); switch (xvValidator.ValidationType) { case XmlValidator.XmlValidationType.WellFormed: { //don't need to do anything break; } case XmlValidator.XmlValidationType.Schema: { //still don't need to do anything break; } case XmlValidator.XmlValidationType.DTD: { break; } } if (xvValidator.IsValid) { Result += sXml; } else { throw new Exception("The XML fragment did not pass validation.\n" + xvValidator.ErrorMessages); } break; } #endregion #region weekofyear case "weekofyear": { string sContents = GetParameter("", ChildElement, Application, SoapNamespaceManager); DateTime dtDate; try { dtDate = Convert.ToDateTime(sContents); } catch (Exception e) { //if there is a problem parsing the date, default to today System.Diagnostics.Debug.WriteLine(e.ToString()); dtDate = DateTime.Today; } int iWeekOfYear = CultureInfo.CurrentCulture.DateTimeFormat.Calendar.GetWeekOfYear(dtDate, CultureInfo.CurrentCulture.DateTimeFormat.CalendarWeekRule, CultureInfo.CurrentCulture.DateTimeFormat.FirstDayOfWeek); Result += iWeekOfYear.ToString(); break; } #endregion #region weekofmonth case "weekofmonth": { string sContents = GetParameter("", ChildElement, Application, SoapNamespaceManager); DateTime dtDate; try { dtDate = Convert.ToDateTime(sContents); } catch (Exception e) { //if there is a problem parsing the date, default to today System.Diagnostics.Debug.WriteLine(e.ToString()); dtDate = DateTime.Today; } int iWeekOfMonth = (dtDate.Day / 7) + (dtDate.Day % 7 == 0 ? 0 : 1); Result += iWeekOfMonth.ToString(); break; } #endregion #region transform case "transform": { string sXslFilename = ""; string sXml = ""; XmlAttribute xaXslFilename = (XmlAttribute)ChildNode.SelectSingleNode("@xslfilename", SoapNamespaceManager); if (xaXslFilename != null) { sXslFilename = xaXslFilename.Value.Trim(); sXml = GetParameter("", ChildNode, Application, SoapNamespaceManager); } else { sXslFilename = GetParameter("xslfilename", ChildNode, Application, SoapNamespaceManager); sXml = GetParameter("content", ChildNode, Application, SoapNamespaceManager); } //get the full path to the filename if (sXslFilename.IndexOf("://") == -1 && sXslFilename.Substring(1, 1) != ":") { RegistryKey rkConfig = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(MessageQueueSpawner._RegistryKeyConfigFilePath); if (rkConfig != null) { sXslFilename = System.IO.Path.Combine(Convert.ToString(rkConfig.GetValue("ConfigPath")), sXslFilename); } } //the XsltArgumentList is for xslt extension functions XsltArgumentList xalArguments = new XsltArgumentList(); xalArguments.AddExtensionObject("http://www.1800communications.com/schemas", new XsltExtensionFunctions()); XslTransform xslTransform = new XslTransform(); xslTransform.Load(sXslFilename, new XmlUrlResolver()); XmlDocument xdToTransform = new XmlDocument(); xdToTransform.LoadXml(sXml); StringWriter swResults = new StringWriter(); xslTransform.Transform(xdToTransform, xalArguments, swResults, null); Result += swResults.ToString(); break; } #endregion #region random case "random": { XmlElement xeChildNode = (XmlElement)ChildNode; string sMin = xeChildNode.GetAttribute("min"); string sMax = xeChildNode.GetAttribute("max"); int iRandom = 0; if (sMax.Length > 0) { if (sMin.Length > 0) { iRandom = randomNumberGenerator.Next(Convert.ToInt32(sMin), Convert.ToInt32(sMax)); } else { iRandom = randomNumberGenerator.Next(Convert.ToInt32(sMax)); } } else { iRandom = randomNumberGenerator.Next(); } Result += iRandom.ToString(); break; } #endregion #region queuesize case "queuesize": { // Abel //string sQueuePath = GetParameter("", ChildElement, Application, SoapNamespaceManager); //sQueuePath = ResolveQueuePath(sQueuePath, ChildElement, m_sIncomingQueuePath); //long lMessageCount = 0; //try //{ // lMessageCount = QueueMonitorClient.MessageCount(sQueuePath); //} //catch (Exception e) //{ // System.Diagnostics.Debug.WriteLine(e.ToString()); //} //Result += Convert.ToString(lMessageCount); break; } #endregion #region validemail case "validemail": { string sEmail = GetParameter("", ChildElement, Application, SoapNamespaceManager); //get the timeout int iTimeout = 60000; if (ChildElement.HasAttribute("timeout")) { try { iTimeout = Convert.ToInt32(ChildElement.GetAttribute("timeout")); } catch (Exception e) { System.Diagnostics.Debug.WriteLine(e.ToString()); } } //get the target validation level HexValidEmailLevel hvelTargetLevel = HexValidEmailLevel.hexVeLevelSmtp; if (ChildElement.HasAttribute("level")) { switch (ChildElement.GetAttribute("level")) { case "smtp": { hvelTargetLevel = HexValidEmailLevel.hexVeLevelSmtp; break; } case "dns": { hvelTargetLevel = HexValidEmailLevel.hexVeLevelDns; break; } case "syntax": { hvelTargetLevel = HexValidEmailLevel.hexVeLevelSyntax; break; } } } HexValidEmailLib.Connection hcConnection = new HexValidEmailLib.ConnectionClass(); hcConnection.FromDomain = "1800communications.com"; hcConnection.FromEmail = "*****@*****.**"; hcConnection.Timeouts.Item(HexValidEmailTimeout.hexVeTimeoutSmtpTotal).Value = iTimeout; HexValidEmailLevel hvelResult = (HexValidEmailLevel)hcConnection.Validate(sEmail, hvelTargetLevel); if (hvelResult == hvelTargetLevel) { Result += "true"; } else { System.Diagnostics.Debug.WriteLine(((HexValidEmailErrors)hcConnection.Error).ToString()); Result += "false"; } break; } #endregion #region [Custom Parameters] default: Result = Result + GetCustomParameter((XmlElement)ChildNode, Application, SoapNamespaceManager); break; #endregion } } } catch (Compilers.CompilationException cexx) { // Compilation of the Code Block Jacked Up string[] Errors = new string[cexx.Errors.Count]; int I = 0; foreach (System.CodeDom.Compiler.CompilerError Error in cexx.Errors) { Errors[I++] = Error.ErrorText; } // ReportErrorNow((Application is XmlDocument ? (XmlDocument)Application : (Application != null ? Application.OwnerDocument : null)), cexx.GetType().ToString(), "Errors During Compilation", null, Errors); } catch (Exception exx) { //Report any other error we found and keep going //Application can be an XmlDocument. if it is, it has no OwnerDocument. so check. // ReportErrorNow((Application is XmlDocument ? (XmlDocument)Application : (Application != null ? Application.OwnerDocument : null)), exx); } } return Result; }