我把DATASET里的数据写到了一个XML文件里,现在想将这个XML文件转换为HTML格式, 该如何实现了,希望大家帮下忙我该如何做?

解决方案 »

  1.   

    msdn里有不过是英文的
    ms-help://MS.MSDNQTR.2003FEB.2052/xmlsdk30/htm/xmcongettingstartedwithxslt.htm
    市面上关于xslt的书非常不少
      

  2.   

    我的整个流程是这样的, 执行查询,并将查询结果写入DATASET,页面有个DATAGRID绑定了这个DATASET,并显示结果, 我现在也想同时将这个结果已邮件的形式发送给客户,并且客户读到邮件的内容是个已经格式化的了,就如同在网页上看到的DATAGRID一样。 
    如何实现最好?我想到了用XML保存DATASET里的数据,然后再转换为HTML发送个客户。但不知道这个如何转换
      

  3.   

    简单的你可以把论坛某个贴子下载到本地看看就清楚了,它就是用的xslt
      

  4.   

    同时给客户发个XSL文件就可以了
      

  5.   

    贴个XSLT的使用的例子,DeptEmp.xslt提前定义好的。Private Sub XsltForDeptEmp()
            Dim objConn As OracleConnection
            Dim objDataAdapter As OracleDataAdapter
            Dim strConn As String = "user id=scott;password=tiger;data source=orcl"
            Dim strSql As String
            Dim ds As DataSet
            Dim objXmlDataDoc As XmlDataDocument
            Try
                objConn = New OracleConnection(strConn)
                ds = New DataSet("DeptEmp")            strSql = "select * from emp"
                objDataAdapter = New OracleDataAdapter(strSql, objConn)
                objDataAdapter.Fill(ds, "Employee")            strSql = "select * from dept"
                objDataAdapter.SelectCommand.CommandText = strSql
                objDataAdapter.Fill(ds, "Dept")            ds.CaseSensitive = False
                ds.Relations.Add("DeptEmployees", _
                               ds.Tables("Dept").Columns("DeptNo"), _
                               ds.Tables("Employee").Columns("DeptNo")).Nested = True            
                objXmlDataDoc = New XmlDataDocument
                objXmlDataDoc.LoadXml(ds.GetXml())
                Dim objXslTran As XslTransform = New XslTransform
                objXslTran.Load("E:\Visual Studio Project\ADO.NET\Demo_DataSet_Xml\DeptEmp.xslt")
                Dim writer As XmlTextWriter = New XmlTextWriter("DeptEmp.html", System.Text.Encoding.UTF8)
                objXslTran.Transform(objXmlDataDoc, Nothing, writer, Nothing)
                writer.Close()
                OpenHtml("DeptEmp.html")
            Catch ex As Exception
                Console.WriteLine(ex.Message)
                Console.ReadLine()
            End Try
        End Sub    Private Sub OpenHtml(ByVal strHtmlName As String)
            Dim strPath As String = Path.Combine(System.Environment.CurrentDirectory, strHtmlName)
            Process.Start("IExplore.exe", strPath)
        End Sub注意:Dim writer As XmlTextWriter = New XmlTextWriter("DeptEmp.html", System.Text.Encoding.UTF8)最后生成 html 文件。--------------------------
    DeptEmp.xslt
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE xsl:stylesheet [
      <!ENTITY nbsp "&#160;">
    ]>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:template match="DeptEmp">
      <HTML>
      <head>
    <STYLE>
    BODY {font-family:verdana;font-size:9pt}
    TD   {font-size:8pt}
    </STYLE>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />   
      </head>
        <BODY>
        <TABLE BORDER="1">
          <xsl:apply-templates select="Dept"/>
        </TABLE>
        </BODY>
      </HTML>
    </xsl:template><xsl:template match="Dept">
        <TR bgcolor="#cccccc"><TD>
          <xsl:value-of select="DEPTNO"/>, <xsl:value-of select="DNAME"/>, <xsl:value-of select="LOC"/><BR/>
        </TD></TR>
        <TR><TD>
          <xsl:apply-templates select="Employee"/>
        </TD></TR>
    </xsl:template><xsl:template match="Employee">
      <TABLE BORDER="1">
        <TR><TD valign="top"><B>EMPNO:</B></TD><TD valign="top"><xsl:value-of select="EMPNO"/>&nbsp;</TD></TR>
        <TR><TD valign="top"><B>ENAME:</B></TD><TD valign="top"><xsl:value-of select="ENAME"/>&nbsp;</TD></TR>
        <TR><TD valign="top"><B>MGR:</B></TD><TD valign="top"><xsl:value-of select="MGR"/>&nbsp;</TD></TR>
        <TR><TD valign="top"><B>HIREDATE:</B></TD><TD valign="top"><xsl:value-of select="HIREDATE"/>&nbsp;</TD></TR>
        <TR><TD valign="top"><B>SAL:</B></TD><TD valign="top"><xsl:value-of select="SAL"/>&nbsp;</TD></TR>
        <TR><TD valign="top"><B>COMM:</B></TD><TD valign="top"><xsl:value-of select="COMM"/>&nbsp;</TD></TR>
      </TABLE>
    </xsl:template>
    </xsl:stylesheet>
      

  6.   

    各位   可是xlst 的样式表 你们 怎么生成呢!
    是通过手写 代码吗!
    请问谁有谁有这样的例子!
      

  7.   

    我的整个流程是这样的, 执行查询,并将查询结果写入DATASET,页面有个DATAGRID绑定了这个DATASET,并显示结果, 我现在也想同时将这个结果已邮件的形式发送给客户,并且客户读到邮件的内容是个已经格式化的了,就如同在网页上看到的DATAGRID一样。 
    如何实现最好?我想到了用XML保存DATASET里的数据,然后再转换为HTML发送个客户。但不知道这个如何转换
    ------------------------------我现在换个思路,我不将结果保存在XML,然后在转换为HTML;  因为当我执行完查询我的页面上已经有了这个带有数据的DATAGRID.我能否截取到这个DATAGRID的HTML呢?
      

  8.   

    fangxinggood(JustACoder) 已经讲得很详细了!
      

  9.   

    1. 定义一个输入流
      
      System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
      System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
       //或者是一个文件流,那么你的DataGrid就可以输出到HTML里
      
    2. 将目标数据绑定到输入流输出
      
      this.RenderControl(oHtmlTextWriter);
      
      //this 表示输出本页,你也可以绑定datagrid,或其他支持obj.RenderControl()属性的控件
      

  10.   

    fangxinggoog能讲的详细一些吗?谢谢了
      

  11.   

    已解决,如fangxinggoog的提示: private void SendResultMail(DataGrid dg, string resultname, string mailadress)
     {
       System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
       System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
        dg.RenderControl(oHtmlTextWriter);    try
         {         System.Web.Mail.MailMessage mymail = new System.Web.Mail.MailMessage();
                    mymail.From = "[email protected]";
                    mymail.To = mailadress;
                    mymail.Subject = resultname;
                    mymail.Priority = MailPriority.Low;
                    mymail.BodyFormat = MailFormat.Html;
                    mymail.BodyEncoding = System.Text.Encoding.UTF8;
                    mymail.Body = oStringWriter.ToString();
                    SmtpMail.Send(mymail);
                }
                catch (Exception ee)
                {
                    throw ee;
                }
            }