static MailMessage GetMailMessage(XPathNavigator message, XPathItemFactory itemFactory) { var xpathMessage = new XPathMailMessage(); xpathMessage.ReadXml(message); return xpathMessage.ToMailMessage(itemFactory); }
public long PrepareContent(XPathItemFactory itemFactory, XmlResolver resolver) { XPathItem item = this.Content; if (item != null) { XmlQualifiedName method = _Method ?? GetMethodFromMediaType(this.MediaType, this.Method); this.contentStream = new MemoryStream(); Serialize(this.contentStream, itemFactory, method); this.contentStream.Position = 0; } else if (this.Src != null) { if (resolver == null) { throw new ArgumentNullException("resolver"); } Stream source = resolver.GetEntity(this.Src, null, typeof(Stream)) as Stream; if (source != null) { if (source.CanSeek) { this.contentStream = source; } else { this.contentStream = new MemoryStream(); source.CopyTo(this.contentStream); this.contentStream.Position = 0; source.Dispose(); } } else { throw new InvalidOperationException(String.Format(CultureInfo.InvariantCulture, "Could not resolve {0}.", this.Src.AbsoluteUri)); } } return (this.contentStream != null) ? this.contentStream.Length : 0; }
public void Serialize(Stream output, XPathItemFactory itemFactory, XmlQualifiedName method) { if (this.Content == null) throw new InvalidOperationException("Content cannot be null."); XPathItem item = this.Content; if (method == ExtensionMethods.Base64Binary) { byte[] buffer = (!item.IsNode && item.XmlType.TypeCode == XmlTypeCode.Base64Binary) ? (byte[])item.TypedValue : Convert.FromBase64String(item.Value); output.Write(buffer, 0, buffer.Length); } else if (method == ExtensionMethods.HexBinary) { byte[] buffer = (!item.IsNode && item.XmlType.TypeCode == XmlTypeCode.HexBinary) ? (byte[])item.TypedValue : fromBinHexString(item.Value); output.Write(buffer, 0, buffer.Length); } else { var serialization = new XPathSerializationOptions { Indent = this.Indent, OmitXmlDeclaration = this.OmitXmlDeclaration, MediaType = this.MediaType, Method = method, DocTypePublic = this.DocTypePublic, DocTypeSystem = this.DocTypeSystem, Encoding = this.Encoding, ByteOrderMark = this.ByteOrderMark }; itemFactory.Serialize(item, output, serialization); } }
public void Deserialize(Stream source, Uri sourceUri, XPathItemFactory itemFactory, XmlQualifiedName method) { if (source == null) throw new ArgumentNullException("source"); if (itemFactory == null) throw new ArgumentNullException("itemFactory"); XPathItem content; TextReader textReader = (this.Encoding != null) ? new StreamReader(source, this.Encoding) : new StreamReader(source); if (method == XPathSerializationMethods.Xml || method == XPathSerializationMethods.XHtml) { content = itemFactory.CreateNodeReadOnly(textReader, new XmlParsingOptions { BaseUri = sourceUri }).CreateNavigator(); } else if (method == XPathSerializationMethods.Html) { var htmlParser = XPathHttpClient.HtmlParser; if (htmlParser != null) { content = htmlParser(textReader).CreateNavigator(); } else { content = itemFactory.CreateAtomicValue(textReader.ReadToEnd(), XmlTypeCode.String); } } else if (method == XPathSerializationMethods.Text) { content = itemFactory.CreateAtomicValue(textReader.ReadToEnd(), XmlTypeCode.String); } else { byte[] buffer; using (var memStream = new MemoryStream()) { source.CopyTo(memStream); buffer = memStream.ToArray(); } byte[] base64 = Encoding.UTF8.GetBytes(Convert.ToBase64String(buffer)); content = itemFactory.CreateAtomicValue(base64, XmlTypeCode.Base64Binary); } this.Content = content; }
public void Deserialize(Stream source, Uri sourceUri, XPathItemFactory itemFactory, string overrideMediaType) { string mediaType = !String.IsNullOrEmpty(overrideMediaType) ? overrideMediaType : this.MediaType; XmlQualifiedName method = GetMethodFromMediaType(mediaType, ExtensionMethods.Base64Binary); Deserialize(source, sourceUri, itemFactory, method); }
static bool[] FunctionsAvailable(QName[] names, Processor processor, XPathItemFactory itemFactory) { const string xsltNs = "http://www.w3.org/1999/XSL/Transform"; IXPathNavigable stylesheetDoc = itemFactory.BuildNode(); XmlWriter builder = stylesheetDoc.CreateNavigator().AppendChild(); builder.WriteStartElement("stylesheet", xsltNs); builder.WriteAttributeString("version", "2.0"); for (int i = 0; i < names.Length; i++) { QName item = names[i]; builder.WriteAttributeString("xmlns", "p" + i.ToStringInvariant(), null, item.Uri); } builder.WriteStartElement("output", xsltNs); builder.WriteAttributeString("method", "text"); builder.WriteEndElement(); builder.WriteStartElement("template", xsltNs); builder.WriteAttributeString("name", "main"); for (int i = 0; i < names.Length; i++) { QName item = names[i]; if (i > 0) { builder.WriteElementString("text", xsltNs, "|"); } builder.WriteStartElement("value-of", xsltNs); builder.WriteAttributeString("select", "function-available('{0}:{1}')".FormatInvariant("p" + i.ToStringInvariant(), item.LocalName)); builder.WriteEndElement(); } builder.WriteEndElement(); // template builder.WriteEndElement(); // stylesheet builder.Close(); XsltCompiler compiler = processor.NewXsltCompiler(); compiler.BaseUri = new Uri("foo:bar"); compiler.XmlResolver = null; XsltTransformer transform = compiler.Compile(stylesheetDoc.CreateNavigator().ReadSubtree()).Load(); transform.InitialTemplate = new QName("main"); using (var output = new StringWriter(CultureInfo.InvariantCulture)) { var serializer = new Serializer(); serializer.SetOutputWriter(output); transform.Run(serializer); return output.ToString().Trim().Split('|').Select(s => XmlConvert.ToBoolean(s)).ToArray(); } }
public MailMessage ToMailMessage(XPathItemFactory itemFactory) { var mailMessage = new MailMessage(); if (this.From != null) { mailMessage.From = this.From.ToMailAddress(); } for (int i = 0; i < this.To.Count; i++) { mailMessage.To.Add(this.To[i].ToMailAddress()); } for (int i = 0; i < this.CC.Count; i++) { mailMessage.CC.Add(this.CC[i].ToMailAddress()); } for (int i = 0; i < this.Bcc.Count; i++) { mailMessage.Bcc.Add(this.Bcc[i].ToMailAddress()); } for (int i = 0; i < this.ReplyTo.Count; i++) { mailMessage.ReplyToList.Add(this.ReplyTo[i].ToMailAddress()); } if (this.Sender != null) { mailMessage.Sender = this.Sender.ToMailAddress(); } if (this.Subject.HasValue()) { mailMessage.Subject = this.Subject.Replace('\r', ' ').Replace('\n', ' '); } if (this.Body != null) { using (var writer = new StringWriter(CultureInfo.CurrentCulture)) { this.Body.Serialize(writer, itemFactory); mailMessage.Body = writer.ToString(); } mailMessage.IsBodyHtml = this.Body.Method == XPathSerializationMethods.Html || this.Body.Method == XPathSerializationMethods.XHtml; } return mailMessage; }
public void Serialize(TextWriter output, XPathItemFactory itemFactory) { if (this.Content == null) { return; } var serialization = new XPathSerializationOptions { Method = this.Method, }; itemFactory.Serialize(this.Content, output, serialization); }