2.0 xml

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

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

None.gif <? xml version="1.0" encoding="utf-8"  ?>
None.gif
None.gif
< GetBusyCellTopN >
None.gif    
< Row >
None.gif        
< Region > 南京 </ Region >
None.gif        
< Section > 六合县 </ Section >
None.gif        
< Cell > 1区 </ Cell >
None.gif        
< Traffic > 23.2 </ Traffic >
None.gif        
< TrafficPerCh > 12 </ TrafficPerCh >
None.gif    
</ Row >
None.gif    
< Row >
None.gif        
< Region > 南京 </ Region >
None.gif        
< Section > 六合县 </ Section >
None.gif        
< Cell > 2区 </ Cell >
None.gif        
< Traffic > 23.2 </ Traffic >
None.gif        
< TrafficPerCh > 12 </ TrafficPerCh >
None.gif    
</ Row >
None.gif    
< Row >
None.gif        
< Region > 南京 </ Region >
None.gif        
< Section > 六合县 </ Section >
None.gif        
< Cell > 3区 </ Cell >
None.gif        
< Traffic > 23.2 </ Traffic >
None.gif        
< TrafficPerCh > 12 </ TrafficPerCh >
None.gif    
</ Row >
None.gif    
< Row >
None.gif        
< Region > 南京 </ Region >
None.gif        
< Section > 六合县 </ Section >
None.gif        
< Cell > 4区 </ Cell >
None.gif        
< Traffic > 23.2 </ Traffic >
None.gif        
< TrafficPerCh > 12 </ TrafficPerCh >
None.gif    
</ Row >
None.gif    
< Row >
None.gif        
< Region > 南京 </ Region >
None.gif        
< Section > 六合县 </ Section >
None.gif        
< Cell > 5区 </ Cell >
None.gif        
< Traffic > 23.2 </ Traffic >
None.gif        
< TrafficPerCh > 12 </ TrafficPerCh >
None.gif    
</ Row >
None.gif
</ GetBusyCellTopN >


接下来是.xsl文件

None.gif <? xml version="1.0" encoding="utf-8" ?>
None.gif
None.gif
< xsl:stylesheet  version ="1.0"
None.gif    xmlns:xsl
="http://www.w3.org/1999/XSL/Transform" >
None.gif
None.gif
< xsl:template  match ="/GetBusyCellTopN" >
None.gif        
< fieldset >
None.gif            
< legend > 超忙小区前10名 </ legend >
None.gif            
< table  style ="width: 99%; background-color:#CCCCCC;"  cellspacing ="1"  cellpadding ="2"  border ="0" >
None.gif                
< tr  style ="font-weight:bold;" >
None.gif                    
< td  class ="tdHeadbg_gray"  align ="center"  noWrap ="true" > 地区 </ td >
None.gif                    
< td  class ="tdHeadbg_gray"  align ="center"  noWrap ="true" > 县分 </ td >
None.gif                    
< td  class ="tdHeadbg_gray"  align ="center"  noWrap ="true" > 小区 </ td >
None.gif                    
< td  class ="tdHeadbg_gray"  align ="center"  noWrap ="true" > 话务量 </ td >
None.gif                    
< td  class ="tdHeadbg_gray"  align ="center"  noWrap ="true" > 每线话务量 </ td >
None.gif                
</ tr >
None.gif                
< xsl:for-each  select ="child::Row" >
None.gif                    
< tr >
None.gif                        
< td  class ="tdbg_gray"  style ="background-color:#E6E6FA; "   align ="right"  noWrap ="true" >
None.gif                            
< xsl:value-of  select ="Region" />
None.gif                        
</ td >
None.gif                        
< td  class ="tdbg_gray"  style ="background-color:#E6E6FA; "  align ="right"  noWrap ="true" >
None.gif                            
< xsl:value-of  select ="Section" />
None.gif                        
</ td >
None.gif                        
< td  class ="tdbg_gray"  style ="background-color:#E6E6FA; "  align ="right"  noWrap ="true" >
None.gif                            
< xsl:value-of  select ="Cell" />
None.gif                        
</ td >
None.gif                        
< td  class ="tdbg_gray"  style ="background-color:#E6E6FA; "  align ="right"  noWrap ="true" >
None.gif                            
< xsl:value-of  select ="Traffic" />
None.gif                        
</ td >
None.gif                        
< td  class ="tdbg_gray"  style ="background-color:#E6E6FA; "  align ="right"  noWrap ="true" >
None.gif                            
< xsl:value-of  select ="TrafficPerCh" />
None.gif                        
</ td >
None.gif                    
</ tr >
None.gif                
</ xsl:for-each >
None.gif            
</ table >
None.gif        
</ fieldset >
None.gif    
</ xsl:template >
None.gif
None.gif
</ xsl:stylesheet >  
None.gif

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

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

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

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

.cs文件内容:

ExpandedBlockStart.gif ContractedBlock.gif /**/ /// <summary>
InBlock.gif    
/// 绑定Xml数据按照预定格式输出
InBlock.gif    
/// </summary>
ExpandedBlockEnd.gif    
/// <param name="strXml">xml数据流</param>

None.gif      private   void  BoundXmlToHtml(System.Web.UI.WebControls.Xml xml, string  strXml)
ExpandedBlockStart.gifContractedBlock.gif    
dot.gif {
InBlock.gif        
try
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            XmlDocument doc 
= new XmlDocument();
InBlock.gif            TextReader strReader 
= new StringReader(strXml);
InBlock.gif            doc.Load(strReader);
InBlock.gif
InBlock.gif            XslTransform xsTran 
= new XslTransform();    
InBlock.gif            xsTran.Load(Server.MapPath(
@"Xml/GetBusyIdleCell.xsl"));
InBlock.gif
InBlock.gif            xml.Document 
= doc;
InBlock.gif            xml.Transform 
= xsTran;
ExpandedSubBlockEnd.gif        }

InBlock.gif        
catch (Exception ex)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            Console.WriteLine(ex.Message);
ExpandedSubBlockEnd.gif        }

ExpandedBlockEnd.gif    }

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



 

转载于:https://www.cnblogs.com/sw22225458/archive/2007/04/26/728829.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值