Esempio n. 1
0
        public void Add(Member item)
        {
            //Tranforma un objeto a formato XML
            XmlSerializer serializer   = new XmlSerializer(item.GetType());
            var           memoryStream = new MemoryStream();
            var           strWriter    = new StringWriterUtf8();

            serializer.Serialize(strWriter, item);
            var strXML = strWriter.ToString();

            strWriter.Close();
            try
            {
                MemoryStream ms = new MemoryStream(
                    System.Text.Encoding.UTF8.GetBytes(strXML));
                //conexión a la base de datos
                Session session = new Session("localhost", 1984, "admin", "admin");
                //abre base de datos
                session.Execute("check biblioteca");
                //Agrega un miembro a la biblioteca
                session.Add("members", ms);
                session.Close();
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
        protected override async Task <string> CreateStructureAsync(IEnumerable <Sentence> sentences)
        {
            var header = new XDeclaration(version: "1.0", encoding: "utf-8", standalone: "yes");
            var doc    = new XDocument( // xml -> xsd, xmlsoap -> wsdl, xslt (transformata)
                new XElement("text",
                             from sentence in sentences
                             select new XElement("sentence",
                                                 from word in sentence.Words
                                                 select new XElement("word", word)//SecurityElement.Escape(word).Replace("\'", "&apos;"))
                                                 )));

            var text = doc.ToString()
                       .Replace("&amp;", "&amp;amp;")
                       .Replace("&lt;", "&amp;lt;")
                       .Replace("&gt;", "&amp;gt;")
                       .Replace("\'", "&amp;apos;")
                       .Replace("\"", "&amp;quot;");

            var xml = new StringWriterUtf8();
            await xml.WriteAsync(header.ToString() + "\r\n" + text);

            var ooo = xml.ToString();

            return(await Task.FromResult(ooo));
        }
Esempio n. 3
0
        public string Generate()
        {
            XNamespace ns = "http://www.sitemaps.org/schemas/sitemap/0.9";

            XDocument doc = new XDocument(
                new XDeclaration("1.0", "utf-8", null),
                new XElement(ns + "sitemapindex", new XAttribute("xmlns", ns.NamespaceName))
                );

            foreach (var item in list)
            {
                var sm = new XElement(ns + "sitemap");
                sm.Add(new XElement(ns + "loc", item.Url));

                if (item.LastModified.HasValue)
                {
                    sm.Add(new XElement(ns + "lastmod", item.LastModified.ToString()));
                }

                doc.Root.Add(sm);
            }

            StringBuilder builder = new StringBuilder();

            using (TextWriter writer = new StringWriterUtf8(builder))
            {
                doc.Save(writer);
            }

            return(builder.ToString());
        }
Esempio n. 4
0
        /// <summary>
        /// Convertir Modelo Comprobante a string XML
        /// </summary>
        /// <param name="comprobante">Modelo Comprobante</param>
        /// <returns>Cadena XML</returns>
        private string ConvertirComprobanteString(Comprobante comprobante)
        {
            try
            {
                var xmlNameSpace = new XmlSerializerNamespaces();
                xmlNameSpace.Add("cfdi", "http://www.sat.gob.mx/cfd/3");
                xmlNameSpace.Add("tfd", "http://www.sat.gob.mx/TimbreFiscalDigital");
                xmlNameSpace.Add("xsi", "http://www.w3.org/2001/XMLSchema-instance");
                if (comprobante.TipoDeComprobante == "P")
                {
                    xmlNameSpace.Add("pago10", "http://www.sat.gob.mx/Pagos");
                }

                XmlSerializer oXmlSerializar = new XmlSerializer(typeof(Comprobante));

                string sXml = string.Empty;

                using (var sww = new StringWriterUtf8())
                {
                    using (XmlWriter writter = XmlWriter.Create(sww))
                    {
                        oXmlSerializar.Serialize(writter, comprobante, xmlNameSpace);
                        sXml = sww.ToString();
                    }
                }

                return(!string.IsNullOrWhiteSpace(sXml) ? sXml : string.Empty);
            }
            catch (Exception ex)
            {
                return(string.Empty);
            }
        }
Esempio n. 5
0
        internal XmlDocument ToXmlDocument(object invoice)
        {
            Assembly        assembly  = Assembly.GetExecutingAssembly();
            FileVersionInfo fvi       = FileVersionInfo.GetVersionInfo(assembly.Location);
            string          fversion  = fvi.FileVersion;
            IInvoiceBase    invBase   = (IInvoiceBase)invoice;
            string          genSystem = invBase.InvoiceSubtype.DocTypeNew + GetTfsString();// String.Format("DotNetApi für ebInterface V{0}", fversion);

            XmlSerializerNamespaces ns = new XmlSerializerNamespaces();

            // ns.Add("xsi", "http://www.w3.org/2001/XMLSchema-instance");

            foreach (var ebISchema in invBase.CurrentSchemas)
            {
                ns.Add(ebISchema.Prefix, ebISchema.Url);
            }
            XmlDocument xDoc = new XmlDocument();
            // XmlSerializer serializer = new XmlSerializer(this.GetType(), null, Type.EmptyTypes, new XmlRootAttribute("InvoiceType"), "http://schemas.microsoft.com/2003/10/serialization/");
            XmlSerializer serializer = new XmlSerializer(invoice.GetType());

            using (StringWriterUtf8 stringWriter = new StringWriterUtf8())
            {
                XmlWriterSettings settings = new XmlWriterSettings
                {
                    Encoding     = Encoding.UTF8,
                    Indent       = true,
                    IndentChars  = "\t",
                    NewLineChars = Environment.NewLine,
                    //ConformanceLevel = ConformanceLevel.Document
                };

                using (XmlWriter writer = XmlWriter.Create(stringWriter, settings))
                {
                    serializer.Serialize(writer, invoice, ns);
                    string xmlString = stringWriter.ToString();
                    xDoc.LoadXml(xmlString);
                }
            }


            var    nspUriSel = from si in invBase.CurrentSchemas where si.CacheName.EndsWith("Invoice.xsd") select si;
            string NspUri    = nspUriSel.FirstOrDefault().Url;
            string prefix    = nspUriSel.FirstOrDefault().Prefix;
            XmlAttributeCollection attrColl = xDoc.DocumentElement.Attributes;
            string genSysTag = (string.IsNullOrEmpty(prefix) ? "" : $"{prefix}:") + "GeneratingSystem";

            if (attrColl.GetNamedItem("GeneratingSystem") != null)
            {
                attrColl.Remove(attrColl[genSysTag]);
            }

            XmlAttribute genSys = xDoc.CreateAttribute(prefix, "GeneratingSystem", NspUri);

            genSys.Value = genSystem;
            xDoc.DocumentElement.Attributes.Append(genSys);

            return(RemoveEmptyNodes(xDoc));
        }
Esempio n. 6
0
            public static string Convert(XDocument xmlDocument)
            {
                var builder = new StringBuilder();

                using (TextWriter writer = new StringWriterUtf8(builder))
                {
                    xmlDocument.Save(writer, SaveOptions.DisableFormatting);
                    return(builder.ToString());
                }
            }
Esempio n. 7
0
        public static string SerializeObject <T>(this T toSerialize)
        {
            var xmlSerializer = new XmlSerializer(toSerialize.GetType());

            using (var textWriter = new StringWriterUtf8())
            {
                xmlSerializer.Serialize(textWriter, toSerialize);
                return(textWriter.ToString());
            }
        }
Esempio n. 8
0
        public string Serialize <T>(T ObjectToSerialize)
        {
            XmlSerializer xmlSerializer = new XmlSerializer(ObjectToSerialize.GetType());

            using (StringWriterUtf8 stringWriter = new StringWriterUtf8())
            {
                xmlSerializer.Serialize(stringWriter, ObjectToSerialize);
                return(stringWriter.ToString());
            }
        }
        public string GetXmlSitemap()
        {
            var activeLanguages = _languageRepository.GetActiveLanguages();

            _isMultilingual   = activeLanguages != null && activeLanguages.Count > 0;
            _enabledLanguages = _isMultilingual ? activeLanguages.Select(al => al.CultureCode).ToList() : null;
            var isSecureConnection = _httpContextAccessor.HttpContext.Request.IsHttps;

            _requestHost = _httpContextAccessor.HttpContext.Request.Host.Host;
            var scheme = isSecureConnection ? "https://" : "http://";

            _protocolHost = scheme + _requestHost;


            var publicPages = _navigation.GetPublicPages();
            List <SitemapUrl> sitemapUrls = new List <SitemapUrl>();

            if (publicPages != null && publicPages.Count > 0)
            {
                foreach (var page in publicPages)
                {
                    sitemapUrls.Add(GetSitemapUrl(page));
                }
            }


            XmlWriterSettings settings = new XmlWriterSettings();

            settings.Indent   = true;
            settings.Encoding = Encoding.UTF8;

            using (var stringWriter = new StringWriterUtf8())
            {
                using (var writer = XmlWriter.Create(stringWriter, settings))
                {
                    // build header
                    writer.WriteStartElement("urlset", "http://www.sitemaps.org/schemas/sitemap/" + SITEMAP_VERSION);
                    writer.WriteAttributeString("xmlns", "xsi", null, "http://www.w3.org/2001/XMLSchema-instance");
                    writer.WriteAttributeString("xmlns", "xhtml", null, "http://www.w3.org/1999/xhtml");
                    var schemaLocation = "http://www.sitemaps.org/schemas/sitemap/" + SITEMAP_VERSION;
                    writer.WriteAttributeString("xsi", "schemaLocation", null, string.Format("{0} {0}/sitemap.xsd", schemaLocation));

                    // write urls to output
                    foreach (SitemapUrl url in sitemapUrls)
                    {
                        AddURL(url, writer);
                    }

                    writer.WriteEndElement();
                    writer.Close();
                }
                return(stringWriter.ToString());
            }
        }
Esempio n. 10
0
        /// <inheritdoc />
        public BaseMessage Serialize(T message)
        {
            var result = new TextMessage();
            var writer = new StringWriterUtf8();

            new XmlSerializer(typeof(T)).Serialize(writer, message);
            var xml = writer.ToString();

            ValidateXml(xml);
            result.Body = xml;
            return(result);
        }
Esempio n. 11
0
        public static string Serialize <T>(T value)
        {
            if (value == null)
            {
                throw new ArgumentNullException(nameof(value));
            }

            var serializer = new System.Xml.Serialization.XmlSerializer(typeof(T));

            using var stringWriter = new StringWriterUtf8();
            serializer.Serialize(stringWriter, value, new XmlSerializerNamespaces(new[] { XmlQualifiedName.Empty }));
            return(stringWriter.ToString());
        }
Esempio n. 12
0
        private string SerializeToString(ParamsList list, bool includeReferenceNumber)
        {
            using (TextWriter writer = new StringWriterUtf8())
                using (XmlWriter xmlWriter = XmlWriter.Create(writer, new XmlWriterSettings {
                    Indent = true, Encoding = Encoding.UTF8
                }))
                {
                    (includeReferenceNumber ? _serializerWithReferenceNumber : _serializer).Serialize(xmlWriter, list);
                    string xml = writer.ToString();

                    return(xml);
                }
        }
        private static string GetSerializedAssembly(SerializableAssembly assembly)
        {
            var serializer = new XmlSerializer(typeof(SerializableAssembly));
            var xmlns      = new XmlSerializerNamespaces();

            xmlns.Add("gml", "http://www.opengis.net/gml/3.2");
            xmlns.Add("asm", "http://localhost/standaarden/assemblage");

            var writer = new StringWriterUtf8();

            serializer.Serialize(writer, assembly, xmlns);
            return(writer.ToString());
        }
        public string SerializeData(T data)
        {
            XmlSerializer employeeSerializer = new XmlSerializer(typeof(T));

            StringWriterUtf8 swWriter = new StringWriterUtf8(sbData);

            //  swWriter = new StringWriter(sbData);

            XmlSerializerNamespaces ns = new XmlSerializerNamespaces();

            ns.Add("xsi", "http://www.w3.org/2001/XMLSchema-instance");
            ns.Add("sh", "urn:sfti:documents:StandardBusinessDocumentHeader");

            employeeSerializer.Serialize(swWriter, data, ns);

            return(sbData.ToString());
        }
    protected void SaveLevelButton_Click(object sender, EventArgs e)
    {
        int ySize = Convert.ToInt32(LevelYSizeTextBox.Text);

        XMLToCSharp.Level level = new XMLToCSharp.Level();
        level.Name = LevelNameTextBox.Text;
        level.Blocks = new List<XMLToCSharp.Block>();

        string[] lines = LevelDataTextBox.Text.Split(',');
        for (int row = 0; row < lines.Length; row++)
        {
            for (var col = 0; col < lines[row].Length; col++)
            {
                int realY = ySize - row - 1;
                switch (lines[row][col])
                {
                    case '8':
                        level.Exit = new XMLToCSharp.Exit() { X = col, Y = realY };
                        break;
                    case '4':
                        level.Player = new XMLToCSharp.Player() { X = col, Y = realY };
                        break;
                    case '2':
                        level.Blocks.Add(new XMLToCSharp.Block() { Type = "Gem", X = col, Y = realY });
                        break;
                    case '1':
                        level.Blocks.Add(new XMLToCSharp.Block() { Type = "Ground", X = col, Y = realY });
                        break;
                }
            }
        }

        string resultingFile;
        XmlSerializer serializer = new XmlSerializer(typeof(XMLToCSharp.Level));
        using (StringWriterUtf8 textWriter = new StringWriterUtf8())
        {
            serializer.Serialize(textWriter, level);
            resultingFile = textWriter.ToString();
        }

        SimplePlatformerEntities ents = new SimplePlatformerEntities();
        ents.levels.Add(new levels() { name = level.Name, level = resultingFile });
        ents.SaveChanges();

        Response.Redirect("~/Default.aspx");
    }
Esempio n. 16
0
        private string WriteXML(XmlDocument xdoc)
        {
            var xwsetting = new XmlWriterSettings
            {
                Indent       = true,
                NewLineChars = Environment.NewLine,
                Encoding     = Encoding.UTF8
            };
            StringWriterUtf8 sWrt        = new StringWriterUtf8();
            XmlWriter        myXMLWriter = XmlWriter.Create(sWrt, xwsetting);

            xdoc.Save(myXMLWriter);
            myXMLWriter.Close();
            // myXMLWriter.Flush();
            string xmlStr = sWrt.ToString();

            return(xmlStr);
        }
Esempio n. 17
0
        /// <summary>
        /// Settings to XML.
        /// </summary>
        ///
        /// <returns>
        /// A String.
        /// </returns>
        public String SettingsToXml()
        {
            XmlSerializer ser = new XmlSerializer(Settings.GetType());

            using (StringWriterUtf8 textWriter = new StringWriterUtf8())
            {
                //! Use DataContractSerializer or DataContractJsonSerializer?
                // See https://msdn.microsoft.com/en-us/library/bb412170(v=vs.100).aspx
                // See https://msdn.microsoft.com/en-us/library/bb924435(v=vs.110).aspx
                // See https://msdn.microsoft.com/en-us/library/aa347875(v=vs.110).aspx
                //
                ser.Serialize(textWriter, Settings);

                textWriter.Flush();

                return(textWriter.ToString());
            }
        }
Esempio n. 18
0
        public static string ToStringUniform(this XmlDocument doc, Encoding encoding, bool indentation)
        {
            var sb = new StringBuilder();

            using (var sw = new StringWriterUtf8(sb, encoding))
            {
                if (!indentation)
                {
                    doc.Save(sw);
                }
                else
                {
                    using (var xtw = new XmlTextWriter(sw)
                    {
                        Indentation = 4
                    })
                    {
                        doc.Save(xtw);
                    }
                }
            }
            return(sb.ToString());
        }
Esempio n. 19
0
        public override void Run()
        {

            HttpWebRequest request = null;

            if (type == RequestTarget.Storage)
            {
                request = CreateRESTRequest(httpVerb, url, body, new SortedList<string, string>(headers));
            }
            else
            {
                request = CreateRequest();
            }

            if (request != null)
            {
                request.Timeout = 500000; // 500 seconds timeout in case of slow connections
            }

            HttpWebResponse response = null;

            for (int retry = 0; retry < MaxRetries; retry++)
            {

                try
                {
                    response = (HttpWebResponse)request.GetResponse();
                    break;
                }
                catch (WebException ex)
                {
                    if (retry < (MaxRetries - 1)) // do not continue with the loop if will not be executed anyway. this will avoid the NPE 
                    {
                        if (ShouldRetry(ex))
                        {
                            Thread.Sleep(1000);
                            continue;
                        }
                    }

                    response = (HttpWebResponse)ex.Response;

                    if (response == null)
                    {
                        Console.Error.Write(ex.Status.ToString());
                        return;
                    }

                }

            }

            using (StreamReader reader = new StreamReader(response.GetResponseStream()))
            {
                string result = reader.ReadToEnd();

                XElement element = null;

                if (!string.IsNullOrEmpty(result))
                    element = XElement.Parse(result);

                XDocument document = CreateResponse(response, element);

                document.Declaration = new XDeclaration("1.0", "utf-8", null);

                StringBuilder output = new StringBuilder();

                using (StringWriterUtf8 writer = new StringWriterUtf8(output))
                {
                    document.Save(writer, SaveOptions.None);
                }

                Console.Write(output.ToString());
            }
        }
Esempio n. 20
0
        public static string GetAuthenticationCookie(string IdProviderUrl, string RP_Uri, string RP_Realm, string UserName, string Password, string Domain)
        {
            //-----------------------------------------------------------------------------
            // Pass the Windows auth credential to the endpoint of the Identity Provider (ADFS)
            //-----------------------------------------------------------------------------
            var binding = new WS2007HttpBinding(SecurityMode.TransportWithMessageCredential);

            binding.Security.Message.EstablishSecurityContext = false;
            var endpoint = new EndpointAddress(IdProviderUrl + "/adfs/services/trust/13/windowsmixed");
            RequestSecurityTokenResponse rstr;

            using (var factory = new Microsoft.IdentityModel.Protocols.WSTrust.WSTrustChannelFactory(binding, endpoint))
            {
                factory.Credentials.Windows.ClientCredential =
                    new NetworkCredential(UserName, Password, Domain);
                factory.TrustVersion = System.ServiceModel.Security.TrustVersion.WSTrust13;

                var rst = new RequestSecurityToken();

                rst.AppliesTo   = new EndpointAddress(RP_Realm);
                rst.KeyType     = WSTrust13Constants.KeyTypes.Bearer;
                rst.RequestType = WSTrust13Constants.RequestTypes.Issue;

                var channel = (Microsoft.IdentityModel.Protocols.WSTrust.WSTrustChannel)factory.CreateChannel();
                channel.Issue(rst, out rstr);
            }

            //-----------------------------------------------------------------------------
            // Send the security token acquired from the Identity Provider (ADFS)
            //  to Replying Party (SharePoint)
            // And acquire authorization cookie from SharePoint Server.
            //-----------------------------------------------------------------------------
            using (var output = new StringWriterUtf8(new StringBuilder()))
            {
                using (var xmlwr = XmlWriter.Create(output))
                {
                    WSTrust13ResponseSerializer rs = new WSTrust13ResponseSerializer();
                    rs.WriteXml(rstr, xmlwr, new WSTrustSerializationContext());
                }
                var str = string.Format("wa=wsignin1.0&wctx={0}&wresult={1}",
                                        HttpUtility.UrlEncode(RP_Uri + "/_layouts/15/Authenticate.aspx?Source=%2F"),
                                        HttpUtility.UrlEncode(output.ToString()));

                var req = (HttpWebRequest)HttpWebRequest.Create(RP_Uri + "/_trust/");

                req.Method            = "POST";
                req.ContentType       = "application/x-www-form-urlencoded";
                req.CookieContainer   = new CookieContainer();
                req.AllowAutoRedirect = false;

                using (var res = req.GetRequestStream())
                {
                    byte[] postData = Encoding.UTF8.GetBytes(str);
                    res.Write(postData, 0, postData.Length);
                }

                using (var res = (HttpWebResponse)req.GetResponse())
                {
                    return(res.Cookies["FedAuth"].Value);
                }
            }
        }
        /// <summary>
        /// Odeslani SMS zpravy
        /// </summary>
        public static SendSmsResult SendSms(OutgoingSms sms, LoginInfo loginInfo)
        {
            if (sms == null)
            {
                throw new ArgumentNullException("message");
            }
            if (loginInfo == null)
            {
                throw new ArgumentNullException("loginInfo");
            }

            #region pozadavek
            var doc    = new XDocument();
            var rootEl = new XElement("outgoing_message");
            doc.Add(rootEl);

            if (sms.RequireDeliveryReport.HasValue)
            {
                if (sms.RequireDeliveryReport == true)
                {
                    rootEl.Add(new XElement("dr_request", "20"));
                }
                else
                {
                    rootEl.Add(new XElement("dr_request", "0"));
                }
            }

            rootEl.Add(new XElement("text", new XCData(sms.Text)));
            rootEl.Add(new XElement("recipient", sms.Recipient));

            if (sms.SendAt.HasValue)
            {
                rootEl.Add(new XElement("send_at", sms.SendAt.Value.ToString("yyyyMMddHHmmss")));
            }

            var sb = new StringBuilder();
            using (var sw = new StringWriterUtf8(sb))
            {
                doc.Save(sw);
            }
            #endregion

            string url = ApiXml20RecieverUrl
                         .Replace("[login]", HttpUtility.UrlEncodeUnicode(loginInfo.Login))
                         .Replace("[password]", HttpUtility.UrlEncodeUnicode(loginInfo.Password))
                         .Replace("[affiliate]", loginInfo.Affiliate);

            // odeslani
            string resultString = Communicator.CallUrl(url, sb.ToString(), "POST", "text/xml");

            #region zpracovani odpovedi
            var result = new SendSmsResult()
            {
                Status = SendSmsResultStatus.OK, StatusDescription = "OK"
            };
            result.Message = sms;

            doc = XDocument.Parse(resultString);
            // chyba
            if (string.Equals(doc.Root.Name.LocalName, "messages", StringComparison.OrdinalIgnoreCase))
            {
                var messageEl = doc.Root.Elements("message").First();

                result.Message.OutgoingSmsID = messageEl.Elements("id").FirstOrDefault().Value;
                result.Message.Text          = messageEl.Elements("text").FirstOrDefault().Value;
                result.Message.SendAt        = DateTime.ParseExact(messageEl.Elements("send_at").FirstOrDefault().Value, "yyyyMMddHHmmss", CultureInfo.InvariantCulture);
                result.Message.Recipient     = messageEl.Elements("recipient").FirstOrDefault().Value;

                result.Parts  = int.Parse(messageEl.Elements("parts").FirstOrDefault().Value);
                result.Price  = decimal.Parse(messageEl.Elements("price").FirstOrDefault().Value, CultureInfo.GetCultureInfo(2057));
                result.Credit = decimal.Parse(doc.Root.Elements("credit").First().Value, CultureInfo.GetCultureInfo(2057));
            }
            else
            {
                result.StatusDescription = doc.Root.Elements("message").First().Value;
                switch (doc.Root.Elements("id").First().Value)
                {
                case "400;1":
                    result.Status = SendSmsResultStatus.InvalidMsisdn;
                    break;

                case "400;2":
                    result.Status = SendSmsResultStatus.InvalidText;
                    break;

                case "400":
                    result.Status = SendSmsResultStatus.InvalidAction;
                    break;

                case "401":
                    result.Status = SendSmsResultStatus.InvalidLogin;
                    break;

                case "402":
                    result.Status = SendSmsResultStatus.LowCredit;
                    break;

                case "500":
                    result.Status = SendSmsResultStatus.GatewayError;
                    break;

                default:
                    break;
                }
            }
            #endregion

            return(result);
        }
Esempio n. 22
0
        /// <summary>
        /// Convertir Modelo Comprobante a XML Reader
        /// </summary>
        /// <param name="comprobante">Modelo Comprobante</param>
        /// <returns>Objeto XmlReader</returns>
        private async Task <string> GenerarComprobanteXmlTemp(Comprobante comprobante)
        {
            string sXml;
            string rutaXmlTemp;

            try
            {
                var xmlNameSpace = new XmlSerializerNamespaces();
                xmlNameSpace.Add("cfdi", "http://www.sat.gob.mx/cfd/3");
                xmlNameSpace.Add("tfd", "http://www.sat.gob.mx/TimbreFiscalDigital");
                xmlNameSpace.Add("xsi", "http://www.w3.org/2001/XMLSchema-instance");
                if (comprobante.TipoDeComprobante == "P")
                {
                    xmlNameSpace.Add("pago10", "http://www.sat.gob.mx/Pagos");
                }

                var oXmlSerializar = new XmlSerializer(typeof(Comprobante));

                using (var sww = new StringWriterUtf8())
                {
                    using (XmlWriter writter = XmlWriter.Create(sww))
                    {
                        oXmlSerializar.Serialize(writter, comprobante, xmlNameSpace);
                        sXml = sww.ToString();
                    }
                }

                var carpeta    = $@"Temp\";
                var directorio = $@"{_facturaRutaTimbrado}\{carpeta}";
                var archivo    = $@"{_facturaRutaTimbrado}\{carpeta}{comprobante.Emisor.Rfc}_{comprobante.TipoDeComprobante}_{comprobante.Serie}_{comprobante.Folio}.xml";

                if (!string.IsNullOrEmpty(sXml))
                {
                    rutaXmlTemp = archivo;
                }
                else
                {
                    return(string.Empty);
                }

                if (!Directory.Exists(directorio))
                {
                    DirectoryInfo di = Directory.CreateDirectory(directorio);
                }

                using (StreamWriter outputFile = new StreamWriter(archivo, false, Encoding.UTF8))
                {
                    await outputFile.WriteAsync(sXml);
                }

                if (File.Exists(archivo))
                {
                    return(archivo);
                }
                else
                {
                    return(string.Empty);
                }
            }
            catch (Exception ex)
            {
                return(string.Empty);
            }
        }
Esempio n. 23
0
        private void fehlerBehandelnToolStripMenuItem_Click(object sender, EventArgs e)
        {
            // convert into opus XML and manage conversion errors
            var mapping = GetDefaultMapping();
            var html    = File.ReadAllText(htmlFileName, Encoding.Default);

            try {
                AddTextToProtocol("Make XHTML");
                // Make XHTML
                var xhtmlDocument = new Texxtoor.BaseLibrary.Core.HtmlAgility.Pack.HtmlDocument();
                xhtmlDocument.OptionOutputAsXhtml = true;
                xhtmlDocument.OptionFixNestedTags = true;
                xhtmlDocument.OptionOutputAsXml   = true;
                xhtmlDocument.LoadHtml(html);
                var ms = new MemoryStream();
                var tw = new XmlTextWriter(ms, Encoding.Default);
                xhtmlDocument.Save(tw);
                // change encoding, as our xslt module needs utf-8
                var enc  = Encoding.GetEncoding("iso-8859-1");
                var text = enc.GetString(ms.ToArray());

                var xhtml = Encoding.UTF8.GetString(Encoding.UTF8.GetBytes(text));
                // convert to UTF-8 for XSLT parsing
                var doc = System.Xml.Linq.XDocument.Parse(xhtml);
                doc.Declaration.Encoding = "UTF-8";
                var sb = new StringBuilder();
                var targetDocWriter = new StringWriterUtf8(sb);
                // replace entites with regular spaces, double call for weird &amp;nbsp;'s
                var leaves = from elm in doc.Descendants()
                             where !elm.Elements().Any()
                             select elm;
                foreach (var leaf in leaves)
                {
                    var v = HttpUtility.HtmlDecode(leaf.Value);
                    v = HttpUtility.HtmlDecode(v);
                    if (v.Contains(((char)133).ToString()))
                    {
                        v = v.Replace(((char)133).ToString(), "...");
                    }
                    leaf.Value = v;
                }
                doc.Save(targetDocWriter);
                xhtml = sb.ToString();
                // transform
                var xml = Html2XmlUtil.HtmlToOpusXsltParser(xhtml, mapping);
                // TODO: check XML here
                using (var xmlStream = new MemoryStream(Encoding.UTF8.GetBytes(xml))) {
                    using (var xmlReader = new XmlTextReader(xmlStream)) {
                        doc = XDocument.Load(xmlReader);
                    }
                }
                AddTextToProtocol("Fix XML");
                // 1. Fix headers: <Element type="section" Name="1   Name">1   Name</Element> ===> Remove "1    "
                var headers = doc.Descendants("Element").Where(elm => elm.Attribute("Type") != null && elm.Attribute("Type").Value == "Section");
                foreach (var header in headers)
                {
                    if (header.FirstNode.NodeType == XmlNodeType.Text)
                    {
                        var value = ((XText)header.FirstNode).Value.Trim();
                        var match = Regex.Match(value, @"^\d{1,3}(?:\.\d{1,3}){0,5}\s+(.*)");
                        if (match.Success)
                        {
                            ((XText)header.FirstNode).Value = match.Groups[1].Value;
                        }
                    }
                }
                // 2. Fix bullet points <li>.     Text</li> ===> Remove ".      "
                var bullets = doc.Descendants("li");
                foreach (var bullet in bullets)
                {
                    var match = Regex.Match(bullet.Value, @"[·]\s+(.*)");
                    if (match.Success)
                    {
                        bullet.Value = match.Groups[1].Value;
                    }
                }
                AddTextToProtocol("Embed Images");
                // 3. Embed images (Element Type="Image")
                var images = doc.Descendants("Element").Where(elm => elm.Attribute("Type") != null && elm.Attribute("Type").Value == "Image");
                foreach (var image in images)
                {
                    // try reading file
                    if (image.Attribute("Path") == null)
                    {
                        continue;
                    }
                    // we take PNG only, hence a conversion is appropriate
                    var path = Path.Combine(imgFolder, Path.GetFileName(image.Attribute("Path").Value));
                    if (!File.Exists(path))
                    {
                        continue;
                    }
                    var img = Image.FromFile(path);
                    using (var imgMs = new MemoryStream()) {
                        img.Save(imgMs, ImageFormat.Png);
                        var base64 = Convert.ToBase64String(imgMs.ToArray());
                        // apply as embedded base64
                        image.Add(new XAttribute("Method", "Base64"));
                        image.Value = base64;
                    }
                }
                sb.Clear();
                targetDocWriter = new StringWriterUtf8(sb);
                doc.Save(targetDocWriter);
                xml = sb.ToString();
                // TODO: if XML is okay store on disc for further processing
                var xmlFileName = Path.Combine(Path.GetDirectoryName(htmlFileName) ?? String.Empty, String.Format("{0}.xml", Path.GetFileNameWithoutExtension(htmlFileName)));
                if (File.Exists(xmlFileName))
                {
                    AddTextToProtocol("XML exists, deleting ");
                    File.Delete(xmlFileName);
                    AddTextToProtocol("XML deleted ");
                }
                AddTextToProtocol("Attempt to write XML");
                File.WriteAllText(xmlFileName, xml, Encoding.UTF8);
                AddTextToProtocol("XML written to disc at {0}", xmlFileName);
            } catch (Exception ex) {
                AddTextToProtocol("** Fehler beim Konvertieren in Texxtoor-XML: {0}", ex.Message);
            }
        }