예제 #1
0
 protected void ValidateDocument(XDocument doc)
 {
     try
     {
         validator.Validate(doc);
     }
     catch (Exception e)
     {
         throw RuntimeExceptionUtil.Mask(e, "Error during xml document validation");
     }
 }
예제 #2
0
        public void TestCreateValidator()
        {
            IXmlValidator validator1 = xmlConfigUtil.CreateValidator(XSD_SIMPLE_TYPES_2_0);

            Assert.AssertNotNull(validator1);

            IXmlValidator validator2 = xmlConfigUtil.CreateValidator(XSD_SIMPLE_TYPES_2_0, XSD_ORM_2_0);

            Assert.AssertNotNull(validator2);

            XDocument doc = xmlConfigUtil.ReadXmlFiles(ORM_XML_SIMPLE)[0];

            validator2.Validate(doc);
        }
예제 #3
0
        private void CallXmlReader(IFormFile file, ref List <string> errorMesages)
        {
            XmlTransactionModel xmlTransactionModel = xmlTransactionReader.Read(file);

            if (xmlTransactionModel != null)
            {
                foreach (XmlTransaction transaction in xmlTransactionModel.Transactions)
                {
                    errorMesages.AddRange(xmlValidator.Validate(transaction));
                }

                if (errorMesages.Count == 0)
                {
                    IEnumerable <TransactionModel> transactionModels = xmlTransactionModel.MapToModel();
                    transactionRepository.AddRange(transactionModels);
                }
            }
        }
예제 #4
0
        /// <summary>
        /// Convert raw bytes of data to messages.
        /// </summary>
        /// <param name="rawData">Messages data to convert.</param>
        /// <returns>Messages returned</returns>
        /// <exception cref="ArgumentNullException">Throws when argument rawData is null.</exception>
        public List <Message> Unmarshall(byte[] rawData)
        {
            if (rawData == null)
            {
                throw new ArgumentNullException();
            }

            var outputMessages = new List <Message>();

            var separatorIndices = new List <int>();

            for (var i = 0; i < rawData.Length; i++)
            {
                if (rawData[i] == 23)
                {
                    separatorIndices.Add(i);
                }
            }
            separatorIndices.Add(rawData.Length);

            for (int i = 0, begin = 0; i < separatorIndices.Count; i++)
            {
                // Validation - might not be necessary.
                var xmlString = Encoding.UTF8.GetString(rawData, begin, separatorIndices[i] - begin);

                if (xmlString == string.Empty) // TODO fix & remove
                {
                    break;
                }

                var xmlDoc   = XDocument.Parse(xmlString);
                var msgClass = Message.GetMessageClassFromString(xmlDoc.Root.Name.LocalName);
                _validator.Validate(msgClass, xmlDoc);

                // Deserialization
                var message = _serializer.Deserialize(rawData, begin, separatorIndices[i] - begin);
                outputMessages.Add(message);

                begin = separatorIndices[i] + 1;
            }

            return(outputMessages);
        }
        public void Validate_PerfectFile_Pass()
        {
            var xmlTransaction = new XmlTransaction
            {
                id = "Inv00001",
                TransactionDate = "2019-01-23T13:45:10",
                PaymentDetails  = new PaymentDetails
                {
                    Amount       = "200.00",
                    CurrencyCode = "USD"
                },
                Status = "Done"
            };

            List <string> result = xmlValidator.Validate(xmlTransaction);

            Assert.IsTrue(result.Count == 0);
        }
예제 #6
0
        public void ExampleDivideProblemMessageXmlPassesValidation()
        {
            var xmlDoc = XDocument.Parse(MessageClass.DivideProblem.GetXmlSchema());
            var passed = _validator.Validate(MessageClass.DivideProblem, xmlDoc);

            Assert.IsTrue(passed);
        }