ATML1671Translator.translator.ATMLTranslator.TranslateAIXMLDocument C# (CSharp) Method

TranslateAIXMLDocument() public method

public TranslateAIXMLDocument ( ) : void
return void
        public void TranslateAIXMLDocument()
        {
            if (_content != null && IsParsible())
            {
                try
                {
                    //---------------------------------//
                    //--- Setup XML reader settings ---//
                    //---------------------------------//
                    ValidationEventHandler validationHandler = (s, ee) => LogManager.SourceError(ATMLTranslator.SOURCE, ee.Exception);
                    var settings = new XmlReaderSettings();
                    settings.ValidationType = ValidationType.None;
                    settings.ValidationFlags = XmlSchemaValidationFlags.None;
                    settings.ValidationEventHandler += validationHandler;

                    string content = Encoding.UTF8.GetString( _content );
                    if (string.IsNullOrWhiteSpace( content ))
                        return;
                    using (var sr = new StringReader( content ))
                    {
                        using (XmlReader xrXml = new XmlTextReader( sr ))
                        {
                            var doc = new XPathDocument( xrXml );

                            string xsdName = SchemaManager.GetSchemaName( Encoding.UTF8.GetString( _content ) );
                            string xslName = xsdName.Replace( ".xsd", ".xsl" );

                            StringReader xslReader = GetXSLReader( xslName );
                            var xr = new XmlTextReader( xslReader );
                            var xslt = new XslCompiledTransform();
                            xslt.Load( xr );

                            //--------------------------------------------------------------------------//
                            //--- Create an XsltArgumentList for custom transformation functionality ---//
                            //--------------------------------------------------------------------------//
                            var xslArg = new XsltArgumentList();
                            xslArg.AddParam( "documentName", "", ProjectManager.ProjectName + ".1671.4.xml" );

                            // Add an object to calculate the new book price.
                            var obj = new TranslationLibrary();
                            //TODO: Figure out all the functionality required for translation
                            xslArg.AddExtensionObject( "urn:utrs.atml-translator-tools", obj );

                            //---------------------------//
                            //--- Transform the file. ---//
                            //---------------------------//
                            using (var w = new StringWriter())
                            {
                                var stringBuilder = new StringBuilder();
                                var xws = new XmlWriterSettings();
                                xws.OmitXmlDeclaration = true;
                                xws.Indent = true;
                                xws.NewLineOnAttributes = false;
                                xws.NamespaceHandling = NamespaceHandling.OmitDuplicates;
                                using (XmlWriter xmlWriter = XmlWriter.Create( stringBuilder, xws ))
                                {
                                    xslt.Transform( doc, xslArg, xmlWriter );
                                    LogManager.SourceTrace(ATMLTranslator.SOURCE, "ATML Test Description translation Completed");
                                    try
                                    {
                                        string xmlOut = stringBuilder.ToString();

                                        FileManager.WriteFile( Encoding.UTF8.GetBytes( xmlOut ) );
                                    }
                                    catch (Exception e)
                                    {
                                        LogManager.SourceError(ATMLTranslator.SOURCE,
                                            "An error has occurred attempting to marshall the translated document into an ATML Test Configuration object.",
                                            e );
                                    }
                                    //OnTranslatedInputDocument(stringBuilder.ToString(), _testConfiguration);
                                }
                            }
                        }
                    }
                }
                catch (Exception ee)
                {
                    LogManager.SourceError(ATMLTranslator.SOURCE, ee, "An error has occurred attempting to process the input document.");
                }
            }
        }