您的位置:首页 > 其它

TeeChart For VCL/FMX V2017使用教程:第十五章 - XML导出和导入

2018-02-27 21:12 465 查看
前言
        TeeChart 5及其后来版本支持图表序列数据的XML输出。
        6及其后来版本支持XML格式的数据输入。
        本教程展示了关于以XML格式导出和导入图表数据的详细讲解。

15.1 导出

在设计时或运行时使用图表导出对话框,图表数据可以很容易地导出为XML格式:


            图1,TeeChart对话框,data(数据)选项卡标签。
        在这个对话框中,您可以选择要导出哪个序列(或者“all”导出所有系列),以及您是否想要导出Point Index(点索引)(0、1、2…等等),Point Labels(点文字-标签)或Point Colors(点颜色)。
        “Copy”按钮生成XML文本并将其复制到Windows或Linux剪贴板。“Save”按钮创建一个新的XML文件。
        with Internet Explorer. 例如,可以使用InternetExplorer打开XML文件,。
        包含单个序列的示例XML文件
        在导出多个序列时,XML格式有一点不同:
        包含多个序列的示例XML文件

15.1.1 导出代码

TeeChart提供了一个以XML格式导出序列数据的类。
这个类位于TeeStore.pas单元,它的名字是TSeriesDataXML
保存文件的例子:Uses TeeStore;
with TSeriesDataXML.Create(Chart1, Series1) do
try
SaveToFile('c:\sample.xml');
finally
Free;
end;
        如果您想要导出Chart1中的所有序列,请在Create构造函数的最后一个参数中传递传递“nil”,而不是Series1。
        这个类还提供了一个函数来将XML输出转换成字符串:var S : String;
with TSeriesDataXML.Create(Chart1, Series1) do
try
S:=AsString;
finally
Free;
end;
一些属性控制了要导出的数据类型,例如,如果包含/不包含point colors(点颜色):with TSeriesDataXML.Create(Chart1, Series1) do
try
IncludeColors:=True;
SaveToFile('c:\sample.xml');
finally
Free;
end;
        到目前为止,我们已经了解了如何生成包含TeeChart序列点的XML数据。
        现在我们来做相反的工作,将这个XML导入到图表中。

15.2 XML数据导入

TeeChart Pro包含一个自动加载XML数据的组件。
该组件驻留在TeeXML.pas单元,类名是TTeeXMLSource。


图2,在Delphi工具栏中的TeeXMLSource组件。
         加载XML图表所需的最少属性是“Chart(图表)”和“FileName(文件名)”。
        图表属性指示在哪里(哪个图表)添加XML数据。文件名属性也可以是一个web地址(URL)。
        Load方法开始将XML数据加载到图表序列中。
        让我们创建一个新的应用程序,并终止一个Chart1组件和一个TeeXMLSource1组件。uses Series;
procedure TForm1.FormCreate(Sender: TObject);
begin
RegisterTeeStandardSeries; //确保“Line(线)”样式被加载。
TeeXMLSource1.Chart:=Chart1;
TeeXMLSource1.FileName:='http://www.steema.com/support/teechart/6/tutorials/xml/TeeChartSampleManySeries.xml';
TeeXMLSource1.Load;
end;
      注意:在上面的示例中,通过添加TeeChart工具栏或添加TeeGally单元到“Uses”引用中,调用RegisterTeeStandardSeries可以被省略。它只需要注册基本的图表样式(线、棒条、饼图等),因此XML导入过程可以根据XML文件中找到的序列样式自动创建序列。

        生成的图表:



        从web URL加载远程XML文件也很简单:procedure TForm1.FormCreate(Sender: TObject);
begin
TeeXMLSource1.Chart:=Chart1;
TeeXMLSource1.FileName:='http://www.steema.com/SampleData.xml';
TeeXMLSource1.Load;
end;


图4,从web url加载示例xml文件的图表。

15.2.1 加载一个序列

        XML源组件有一个SeriesNode属性,可用于仅加载一个序列(以防XML文件包含多个序列)。 TeeXMLSource1.SeriesNode:='Series2';

15.2.2 加载到现有的序列

        如果您希望将XML文件中包含的一个序列数据加载到一个现有的序列中,那么可以设置该序列属性:TeeXMLSource1.Series:=Series1;
TeeXMLSource1.SeriesNode:='Series2';
        上面的代码将把对应“Series2”的XML数据加载到Series1中。
        注意:
        如果两个序列类不相同(例如,XML Series2是一个“线”,而Series1是一个“棒条”),那么最终的输出的将是一个填满空点的Series1。
        为什么 ?
        “Series2”的XML数据将点值定义为“Y”值,而Series1(一个Bar系列),期望点被定义为“Bar”。
        这个问题有两种解决方法:
            a)设置Series1的valuesource属性来匹配XML点的名字:Series1.YValues.ValueSource := 'Y';            b)设置XMLSource组件的ValueSource属性来匹配Series1 ValueSource的名字:TeeXMLSource1.ValueSource := 'Y';

15.3 附加特性

        TeeXMLSource组件还包含一个XMLDocument属性,该属性将对解析和加载XML数据的内部对象返回一个OleVariant引用。
        这个属性引用了一个实现了Microsoft的IXMLDomDocument接口的已创建的后期绑定的实例。
TeeChart不要使用一个早期绑定的实例来避免依赖关系和版本不兼容问题,这取决于您的Windows版本、InternetExplorer版本等等。
        如果您想要阅读关于在Delphi中使用XML解析器的优秀文章,请循着这个链接Delphi杂志的网站。
        TeeXMLSource组件的另一个有用属性是TStringList类型的“XML”。
        您可以使用这个属性来设置XML数据,而不是使用FileName属性。这样,就不需要XML外部文件了。
        本教程中使用的演示程序也可以下载
注意:为了编译这个演示程序,需要使用TeeChart Pro版本6或更高版本(评估或注册)。
[align=center][/align]教程全文完
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: