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

前言

        TeeChart 5及其后来版本支持图表序列数据的XML输出。

        6及其后来版本支持XML格式的数据输入。

        本教程展示了关于以XML格式导出和导入图表数据的详细讲解。

15.1 导出

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


            图1TeeChart对话框,data(数据)选项卡标签。

        在这个对话框中,您可以选择要导出哪个序列(或者“all”导出所有系列),以及您是否想要导出Point Index(点索引)(012…等等)Point Labels(点文字-标签)Point Colors(点颜色)。

        “Copy”按钮生成XML文本并将其复制到WindowsLinux剪贴板。“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)设置Series1valuesource属性来匹配XML点的名字:

Series1.YValues.ValueSource := 'Y';

            b)设置XMLSource组件的ValueSource属性来匹配Series1 ValueSource的名字:

TeeXMLSource1.ValueSource := 'Y';

15.3 附加特性

        TeeXMLSource组件还包含一个XMLDocument属性,该属性将对解析和加载XML数据的内部对象返回一个OleVariant引用。

        这个属性引用了一个实现了MicrosoftIXMLDomDocument接口的已创建的后期绑定的实例。

TeeChart不要使用一个早期绑定的实例来避免依赖关系和版本不兼容问题,这取决于您的Windows版本、InternetExplorer版本等等。

        如果您想要阅读关于在Delphi中使用XML解析器的优秀文章,请循着这个链接Delphi杂志的网站。

        TeeXMLSource组件的另一个有用属性是TStringList类型的“XML”。

        您可以使用这个属性来设置XML数据,而不是使用FileName属性。这样,就不需要XML外部文件了。

        本教程中使用的演示程序也可以下载

注意:为了编译这个演示程序,需要使用TeeChart Pro版本6或更高版本(评估或注册)


教程全文完


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值