public string GetHtml(string transform_path, string xml) { string xsltPath = Server.MapPath(transform_path) + "\\sdctemplate.xslt"; string csspath = Server.MapPath(transform_path) + "\\sdctemplate.css"; //3/10/2016 - change encoding to unicode System.IO.MemoryStream stream = new System.IO.MemoryStream(System.Text.UnicodeEncoding.ASCII.GetBytes(xml)); System.Xml.XPath.XPathDocument document = new System.Xml.XPath.XPathDocument(stream); System.IO.StringWriter writer = new System.IO.StringWriter(); System.Xml.Xsl.XslCompiledTransform transform = new System.Xml.Xsl.XslCompiledTransform(); System.Xml.Xsl.XsltSettings settings = new System.Xml.Xsl.XsltSettings(true, true); System.Xml.XmlSecureResolver resolver = new System.Xml.XmlSecureResolver(new System.Xml.XmlUrlResolver(), csspath); try { transform.Load(xsltPath, settings, resolver); transform.Transform(document, null, writer); } catch (Exception ex) { throw ex; } return(writer.ToString()); }
static public string Transform (string xmldata, string xsluri) { // FIXME: PONER TRY/CATCH PARA EVITAR MOSTRAR EXPLOSIONES DEL TRANSFORM // // CARGA LA HOJA DE ESTILOS System.Xml.Xsl.XslTransform xslt = new System.Xml.Xsl.XslTransform (); try { xslt.Load (System.AppDomain.CurrentDomain.BaseDirectory + "/Public/xml/" + xsluri); } catch (System.IO.FileNotFoundException) { System.Console.WriteLine ("No se ha encontrado el fichero {0}", xsluri); return "Template no encontrado"; } // LEER ENTRADA System.Xml.XmlReader xrd; try { xrd = new XmlTextReader (new System.IO.StringReader (xmldata)); } catch (System.ArgumentNullException) { return "[Contenido vacio (1)]"; } // EJECUTAMOS Y PASAMOS A STRING XPathDocument xpd; try { xpd = new XPathDocument (xrd); } catch (System.Xml.XmlException ex) { return "[xml fuente incorrecto, error: " + ex.Message + "]"; } XmlResolver xrs = new XmlSecureResolver (new XmlUrlResolver (), new PermissionSet (PermissionState.Unrestricted)); XmlReader xr = xslt.Transform (xpd, null, xrs); xrd.Close (); // Output results to string XmlDocument xd = new XmlDocument (); xd.Load (xr); System.IO.StringWriter sw = new System.IO.StringWriter (); try { xd.Save (sw); } catch (System.InvalidOperationException ex) { return "[resultado incorrecto: "+ ex.Message +"]"; } return sw.ToString (); }
protected void Page_Load(object sender, EventArgs e) { List<string> myList = new List<string>(); myList.Add("Usr"); myList.Add("Item"); myList.Add("Topic"); myList.Add("Workspace"); myList.Add("Path"); myList.Add("Social"); XmlTextWriter xW = new XmlTextWriter(File.Open(Server.MapPath("api-doc.docx"), FileMode.Create), Encoding.UTF8); XslCompiledTransform docXSL = new XslCompiledTransform(); XsltSettings myXSS = new XsltSettings(); myXSS.EnableDocumentFunction = true; XmlSecureResolver resolver = new XmlSecureResolver(new XmlUrlResolver(), "http://localhost:64362/Documentation"); resolver.Credentials = CredentialCache.DefaultCredentials; docXSL.Load(Server.MapPath("wsdl-to-doc.xsl"), myXSS, null); try { foreach (string wsName in myList) { docXSL.Transform("http://localhost:54004/" + wsName + ".asmx?WSDL", xW); } } catch (Exception ex) { Response.Write(ex.Message+" "+ex.Source+" "+ex.StackTrace+" "+ex.InnerException.Message); } xW.Flush(); xW.Close(); //Read and output the file to screen using (StreamReader sr = File.OpenText(Server.MapPath("api-doc.docx"))) { string myHtml = sr.ReadToEnd(); divDoc.Text = myHtml; } }
static void Main(string[] args) { // used to build entire input StringBuilder sb = new StringBuilder(); // used on each read operation byte[] buf = new byte[8192]; // prepare the web page we will be asking for HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://gathering.tweakers.net/forum/list_messages/1262310"); // execute the request try { //throw new Exception("bogus"); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); // we will read data via the response stream Stream resStream = response.GetResponseStream(); string tempString = null; int count = 0; do { // fill the buffer with data count = resStream.Read(buf, 0, buf.Length); // make sure we read some data if (count != 0) { // translate from bytes to ASCII text tempString = Encoding.ASCII.GetString(buf, 0, count); // continue building the string sb.Append(tempString); } } while (count > 0); // any more data to read? } catch (WebException ex) { sb.AppendFormat("<html><body><h1>Error</h1><p>status {0} - {1}</html>", ex.Status, ex.Message); } catch (Exception ex) { sb.AppendFormat("<html><body><h1>Error</h1><p>generic error: {0}</html>", ex.Message); } // now run the collected HTML through HTMLtidy to clean it and reformat as XHTML // so we can access it using an XMLreader, for instance. TidyParser tidier = new TidyParser(); bool cfg_ok = tidier.TidyOptSetBool(HtmlTidy.HtmlTidyOptionId.ShowWarnings, true); cfg_ok &= tidier.TidyOptSetBool(HtmlTidy.HtmlTidyOptionId.XhtmlOut, true); cfg_ok &= tidier.TidyOptSetBool(HtmlTidy.HtmlTidyOptionId.XmlDecl, true); cfg_ok &= tidier.TidyOptSetAutoBool(HtmlTidy.HtmlTidyOptionId.IndentContent, HtmlTidyTriState.AutoState); cfg_ok &= tidier.TidyOptAdjustConfig(); if (tidier.TidyConfigErrorCount() > 0) { Console.WriteLine("HTMLTIDY configuration error: {0}", tidier.ErrorMessage()); tidier.TidyErrorSummary(); Console.WriteLine("HTMLTIDY error summary: {0}", tidier.ErrorMessage()); tidier.ResetErrorMessage(); } #if false String res = tidier.DoParseHtml2String(sb.ToString()); Console.WriteLine("HTMLTIDY output\n{0}", res); #endif XmlDocument xhtml_doc = tidier.DoParseHtml(sb.ToString()); if (tidier.TidyErrorCount() > 0 || tidier.TidyWarningCount() > 0) { Console.WriteLine("HTMLTIDY HTML parsing errors: {0}", tidier.ErrorMessage()); tidier.TidyErrorSummary(); Console.WriteLine("HTMLTIDY HTML parsing error+warning summary: {0}", tidier.ErrorMessage()); tidier.ResetErrorMessage(); } Console.WriteLine("\nHTMLTIDY HTML parsing output:\n-----------------------------------\n"); // print out reformatted XML/XHTML XmlWriterSettings settings = new XmlWriterSettings(); settings.OmitXmlDeclaration = false; settings.Indent = true; settings.IndentChars = " "; XmlWriter writer = XmlWriter.Create(Console.Out, settings); // deprecated: new XmlTextWriter(Console.Out); // writer.Formatting = Formatting.Indented; -- deprecated XmlTextWriter usage try { xhtml_doc.WriteTo(writer); writer.Flush(); } catch (Exception ex) { writer.Flush(); Console.WriteLine("XML output error: {0}\n", ex.Message); Console.WriteLine("XML output error source + stacktrace: {0}\n{1}\n", ex.Source, ex.StackTrace); } Console.WriteLine(); // now try a search operation on the XmlDocument. XPathNavigator navigator = xhtml_doc.CreateNavigator(); XPathExpression query = navigator.Compile("count(//html//br)"); double total = (double)navigator.Evaluate(query); Console.WriteLine("Number of <br> elements = {0}\n", total); total = (double)navigator.Evaluate("count(//p)"); Console.WriteLine("Number of <p> elements = {0}\n", total); // perform a bit of XSLT transformation on the XHTML: #if false // Create the credentials. //WebPermission myWebPermission = new WebPermission(PermissionState.None); PermissionSet myPermissions = new PermissionSet(PermissionState.None); //myPermissions.AddPermission(myWebPermission); XmlSecureResolver myResolver = new XmlSecureResolver(new XmlUrlResolver(), myPermissions); XmlReaderSettings mySettings = new XmlReaderSettings(); mySettings.XmlResolver = myResolver; // Compile the style sheet. String xslt_str = ""; TextReader xsl_txt_rdr = new StringReader(xslt_str); XmlTextReader xsl_reader = XmlReader.Create(xsl_txt_rdr, mySettings) as XmlTextReader; XslCompiledTransform xslt = new XslCompiledTransform(true); xslt.Load(xsl_reader, XsltSettings.Default, myResolver); #endif }
public void EmptyEvidenceDeniedAccess () { XmlResolver r = new XmlSecureResolver (new XmlUrlResolver (), (Evidence) null); r.GetEntity (r.ResolveUri (null, "http://www.go-mono.com"), null, typeof (Stream)); }
public void EmptyEvidenceWontMatter () { XmlSecureResolver r = new XmlSecureResolver (new XmlUrlResolver (), (Evidence)null); Uri uri = r.ResolveUri (null, "http://www.go-mono.com"); Assert.IsNotNull (uri); }
public void EmptyCtorCannotResolve () { XmlSecureResolver r = new XmlSecureResolver (null, (Evidence)null); r.ResolveUri (null, "http://www.go-mono.com"); }
public void TestAsync () { var loc = Assembly.GetExecutingAssembly ().Location; Evidence e = XmlSecureResolver.CreateEvidenceForUrl (loc); var ur = new XmlUrlResolver (); var sr = new XmlSecureResolver (ur, e); Uri resolved = sr.ResolveUri (null, loc); Assert.AreEqual ("file", resolved.Scheme); var task = sr.GetEntityAsync (resolved, null, typeof (Stream)); Assert.That (task.Wait (3000)); Assert.IsTrue (task.Result is FileStream, "Unexpected type: " + task.Result.GetType()); }