位置:第三章创建你的第一个图表 >> dataXML方法
dataXML方法 |
在前面的例子中,我们使用了dataURL方法提供数据给FusionCharts.在dataURL方法中,数据包含在一个外部物体XML文件中(如data.xml)或者一个相关URL地址(如ReturnXMLData.asp) 此外,还存在另一种方法来提供XML数据给FusionCharts - dataXML方法. 在此方法中,XML数据存在相同的页面中,FusionCharts也是嵌入的。当使用此方法时,你不需要创建而外的XML文件(像data.xml),他在HTML页面提供。 当使用dataXML方法,你必须非常小心引号冲突. 例如,如果你在XML文档中的属性使用单引号,在你的HTNL页面中请务必使用双引号封装整个XMl字符串,以作为OBJECT/EMBED元素的属性. 加引号的冲突往往不会引起错误,但是可能会一直在想为什么图表没有被渲染(你会得到一个空白的空间而不是图表) 让我们快速看看上面的例子. |
在直接嵌入的HTML页面中使用dataXML方法 |
创建一个chart.html的副本并另存为ChartDataXML.html此外,修改代码如下: |
代码
<html> <body bgcolor="#ffffff"> <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="900" height="300" id="Column3D" > <param name="movie" value="../FusionCharts/Column3D.swf" /> <param name="FlashVars" value="&dataXML=<chart caption='Monthly Sales Summary' subcaption='For the year 2006' xAxisName='Month' yAxisName='Sales' numberPrefix='$'><set label='January' value='17400' /><set label='February' value='19800' /><set label='March' value='21800' /><set label='April' value='23800' /><set label='May' value='29600' /><set label='June' value='27600' /><set label='July' value='31800' /><set label='August' value='39700' /><set label='September' value='37800' /><set label='October' value='21900' /><set label='November' value='32900' /><set label='December' value='39800' /></chart>"> <param name="quality" value="high" /> <embed src="../FusionCharts/Column3D.swf" flashVars="&dataXML=<chart caption='Monthly Sales Summary' subcaption='For the year 2006' xAxisName='Month' yAxisName='Sales' numberPrefix='$'><set label='January' value='17400' /><set label='February' value='19800' /><set label='March' value='21800' /><set label='April' value='23800' /><set label='May' value='29600' /><set label='June' value='27600' /><set label='July' value='31800' /><set label='August' value='39700' /><set label='September' value='37800' /><set label='October' value='21900' /><set label='November' value='32900' /><set label='December' value='39800' /></chart>" quality="high" width="900" height="300" name="Column3D" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /> </object> </body> </html> 正如你在上面看到的,我们已经通过追加它作为FlashVars属性来提供完成的数据,格式如下: 这样你就可以从同一个页面中加载数据显示FusionCharts图表。 |
使用dataXML方法,同时使用JavaScript嵌入图表 |
如果您使用FusionCharts的JavaScript类嵌入图表,您可以使用dataXML为如下方式: |
代码
<html> <head> <script language="JavaScript" src="../FusionCharts/FusionCharts.js"></script> </head> <body bgcolor="#ffffff"> <div id="chartdiv" align="center">The chart will appear within this DIV. This text will be replaced by the chart.</div> <script type="text/javascript"> var myChart = new FusionCharts("../FusionCharts/Column3D.swf", "myChartId", "900", "300", "0", "0"); myChart.setDataXML("<chart caption='Monthly Sales Summary' subcaption='For the year 2006' xAxisName='Month' yAxisName='Sales' numberPrefix='$'><set label='January' value='17400' /><set label='February' value='19800' /><set label='March' value='21800' /><set label='April' value='23800' /><set label='May' value='29600' /><set label='June' value='27600' /><set label='July' value='31800' /><set label='August' value='39700' /><set label='September' value='37800' /><set label='October' value='21900' /><set label='November' value='32900' /><set label='December' value='39800' /></chart>"); myChart.render("chartdiv"); </script> </body> </html> |
上面你可以清楚地看到,不使用setDataURL方法提供了XML文件的路径,在这里我们使用setDataXML方法,来提供完整的XML数据本身 现在查看图表,你会得到和以前相同的输出. |
使用这种方法,然而,当数据量非常大时有时会出问题,发生此问题是由于浏览器dataXML字符串长度限制所导致。当你使用dataXML方法进行大数据量操作时,浏览器会忽略指定长度后面的数据。这将导致FusionCharts的挂起(什么都不会显示在屏幕上)完整的数据并没有提供给它。因此,在使用大数据量时候,建议使用dataURL方法。(基本上,在多系列/组合图表使用时) |