2.0 xml

说到2.0中的xml,功能还是很强大的,对于我而言,最主要功能就是利用它绘制表格了,在不进行编辑和修改的条件下,速度远远还是比gridview速度来的要快多了。
         
         xml绘制表格或自己想绘制的格式主要有两种方式,一种是写*.xml文件和*.xsl文件组合,另一种是用自己写的xml字符串和*.xsl组合 进行绘制。

         实例最能让初学者得到理解,不多说了。

<?xml version="1.0" encoding="utf-8" ?>

<GetBusyCellTopN>
    
<Row>
        
<Region>南京</Region>
        
<Section>六合县</Section>
        
<Cell>1区</Cell>
        
<Traffic>23.2</Traffic>
        
<TrafficPerCh>12</TrafficPerCh>
    
</Row>
    
<Row>
        
<Region>南京</Region>
        
<Section>六合县</Section>
        
<Cell>2区</Cell>
        
<Traffic>23.2</Traffic>
        
<TrafficPerCh>12</TrafficPerCh>
    
</Row>
    
<Row>
        
<Region>南京</Region>
        
<Section>六合县</Section>
        
<Cell>3区</Cell>
        
<Traffic>23.2</Traffic>
        
<TrafficPerCh>12</TrafficPerCh>
    
</Row>
    
<Row>
        
<Region>南京</Region>
        
<Section>六合县</Section>
        
<Cell>4区</Cell>
        
<Traffic>23.2</Traffic>
        
<TrafficPerCh>12</TrafficPerCh>
    
</Row>
    
<Row>
        
<Region>南京</Region>
        
<Section>六合县</Section>
        
<Cell>5区</Cell>
        
<Traffic>23.2</Traffic>
        
<TrafficPerCh>12</TrafficPerCh>
    
</Row>
</GetBusyCellTopN>


接下来是.xsl文件

<?xml version="1.0" encoding="utf-8"?>

<xsl:stylesheet version="1.0"
    xmlns:xsl
="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/GetBusyCellTopN">
        
<fieldset>
            
<legend>超忙小区前10名</legend>
            
<table style="width: 99%; background-color:#CCCCCC;" cellspacing="1" cellpadding="2" border="0">
                
<tr style="font-weight:bold;">
                    
<td class="tdHeadbg_gray" align="center" noWrap="true">地区</td>
                    
<td class="tdHeadbg_gray" align="center" noWrap="true">县分</td>
                    
<td class="tdHeadbg_gray" align="center" noWrap="true">小区</td>
                    
<td class="tdHeadbg_gray" align="center" noWrap="true">话务量</td>
                    
<td class="tdHeadbg_gray" align="center" noWrap="true">每线话务量</td>
                
</tr>
                
<xsl:for-each select="child::Row">
                    
<tr>
                        
<td class="tdbg_gray" style="background-color:#E6E6FA; "  align="right" noWrap="true">
                            
<xsl:value-of select="Region"/>
                        
</td>
                        
<td class="tdbg_gray" style="background-color:#E6E6FA; " align="right" noWrap="true">
                            
<xsl:value-of select="Section"/>
                        
</td>
                        
<td class="tdbg_gray" style="background-color:#E6E6FA; " align="right" noWrap="true">
                            
<xsl:value-of select="Cell"/>
                        
</td>
                        
<td class="tdbg_gray" style="background-color:#E6E6FA; " align="right" noWrap="true">
                            
<xsl:value-of select="Traffic"/>
                        
</td>
                        
<td class="tdbg_gray" style="background-color:#E6E6FA; " align="right" noWrap="true">
                            
<xsl:value-of select="TrafficPerCh"/>
                        
</td>
                    
</tr>
                
</xsl:for-each>
            
</table>
        
</fieldset>
    
</xsl:template>

</xsl:stylesheet> 

            aspx文件,这里不做太多描述,就是随便在一个div里拽一个xml,然后设置好数据源和解释文件的路径就ok了。

<div>
    
<asp:Xml ID="Xml1" runat="server" DocumentSource="GetBusyCellTopN.xml" TransformSource="GetBusyCellTopN.xsl"></asp:Xml>
</div>

一行代码都不用写,运行就ok了,这个图表不是很好看,能力有限,不过一定有人会画的很漂亮。

第二种方法:没有了GetBusyCellTopN.xml文件,代之的是String 类型的字符串,在这我就不把字符串内容写出来了,你把.xml文件内容完整的用字符串输出就好了。在.aspx文件中不用设置DocumentSource 和 TransformSource了,在这里用代码实现其中的部分。

.cs文件内容:

/// <summary>
    
/// 绑定Xml数据按照预定格式输出
    
/// </summary>
    
/// <param name="strXml">xml数据流</param>

    private void BoundXmlToHtml(System.Web.UI.WebControls.Xml xml,string strXml)
    
{
        
try
        
{
            XmlDocument doc 
= new XmlDocument();
            TextReader strReader 
= new StringReader(strXml);
            doc.Load(strReader);

            XslTransform xsTran 
= new XslTransform();    
            xsTran.Load(Server.MapPath(
@"Xml/GetBusyIdleCell.xsl"));

            xml.Document 
= doc;
            xml.Transform 
= xsTran;
        }

        
catch (Exception ex)
        
{
            Console.WriteLine(ex.Message);
        }

    }

是不是觉得很简单,其实大部分时间还是花在了怎样设计.xml 和 .xsl 上了,要先学会xpath哦!



 

posted on 2007-04-26 20:53  执法长老  阅读(507)  评论(0编辑  收藏  举报

导航