【问题标题】:FusionCharts XML Object Structure for Delphi?Delphi的FusionCharts XML对象结构?
【发布时间】:2012-03-24 15:20:55
【问题描述】:

我一直在开发用于生成用于 FusionCharts 的 XML 数据的 Web 服务器。经过几天尝试在 Delphi 中提出标准化的对象结构来包装这些图表的 XML 产品,但没有成功,我决定看看是否有人已经这样做了。

我要做的是在 Delphi 中构建一个对象结构,它包含为 FusionCharts 生成 XML 数据所需的功能。有 42 种可能的图表类型,每一种都需要稍微不同的 XML 结构。我开始构建的对象结构简单地包含了指定此类图表之一的通用属性并基于这些属性动态生成 XML 数据的能力。当然,它还包括处理多个数据集,每个数据集用于图表中的不同系列。还有一些带有可能数据集组合的古怪图表,这是我在尝试实现这种结构时迷失的地方。

我很快意识到这是一项艰巨的任务,并且想看看是否有人已经做过这样的事情。我知道有一个 VCL 库可以在应用程序中显示 FusionCharts,但这不是我需要的。我只需要简单地生成要通过 Web 服务器传回 HTTP 客户端的 XML 数据。

这已经完成了吗?如果没有,那么有关如何完成此操作的任何提示或指示?我正准备制作一个名为 TFusionChart 的对象并将所有内容都包装在其中(使用 ChartType 属性),但是有 42 个可能的图表,这将是一团糟。我还可以创建 42 个不同的对象,每个图表一个,但这会有多余的代码。

PS - 我愿意为这个问题开始赏金,这很重要。

更新

为了稍微解释一下我的现有结构,我有一个名为TFusionChart 的基本组件。这个类包含所有图表共有的所有内容,包括类别名称、标题、背景等。实际的图表都不是基于此。在这堂课中,我有TFusionChart2DTFusionChart3D。然后我还有 4 个叫 TFusionChartSingle2DTFusionChartMulti2DTFusionChartSingle3DTFusionChartMulti3D。从这 4 个类开始,我开始创建实际的图表组件。我计划为每个可用的图表创建一个组件。

我面临的问题是对如何管理要包含的数据感到困惑。一些图表可以有一个组合,例如:列中的多个系列、线系列和列中的堆叠数据。仅此一张图表就有一种非常独特的数据存储方式,这很难与其他类型的图表共享,例如简单的单系列柱形图。

我尝试了下面答案中描述的 XML 数据绑定功能,但这个解决方案过于庞大,我放弃了它。同样,因为有 42 种图表。每个图表意味着几千行代码。

【问题讨论】:

  • 能否解释一下投票结束的原因?
  • 你的意思是 Fusioncharts v3.2 吗?

标签: xml delphi fusioncharts


【解决方案1】:

我会尝试为每种图表类型创建一个类,但使用基类将相似的图表保持在一起。该类应该只是图表数据和图表设置的“数据持有者”,并将 XML 输出创建委托给单独的类。这使得尝试在不同的输出生成解决方案之间切换或插入其他输出格式变得容易。

【讨论】:

  • 这实际上是我开始的方式,首先是TFusionChart,然后是TFusionChart3DTFusionChart2D,然后是TFusionChartSingle2DTFusionChartMulti2D,等等。然后我将所有实际图表都基于那些。前 3 个不用作任何图表的基础。
【解决方案2】:

我建议您使用 XML Binding 来构建用于 XML 生成的类层次结构。

为此,您可以参考以下与Fusioncharts相关的XSD资源

如果您发现其他最新的 XSD 资源,请不要忘记分享。


编辑:

正如 OP 所指出的,使用 XML 绑定似乎太过分了,我建议使用它们的替代方法:

  1. 剥离所有不需要的功能,以获得 bare XSD 仍然与 Fusioncharts 规范兼容并符合 OP 要求。
  2. 使用适当的工具处理裸 XSD 以获得相应的 XMI 文件(例如 Entreprise Architect
  3. 案例工具 提供 XMI 文件并开始真正的工作:为 Fusioncharts XML 生成设计灯光类

【讨论】:

  • XML 绑定似乎是一个非常强大的工具,除了在遵循一些不同的教程并完全按照描述进行操作时,我遇到了一些错误“不支持接口”(这是一个问题另一个问题)。不过谢谢!
  • 这已经成为一个如此庞大的项目,以至于我决定不使用 XML 绑定并继续从头开始构建我的结构。这仅仅是因为 42 个单元,每个单元都有数千行代码,这有点过分了。我什至不需要每一个可能的功能,我也想用它制作一个组件。
  • 至少 2010 年 12 月 6 日的 XSD 是最新的吗?您仍然可能不得不使用数千行代码来制作一个组件,以处理 42 种可能类型的图表及其所涉及的复杂性。如果您对 XML/XSD 感到满意,您可以尝试编写缩小版的 XSD 版本(精简但仍然兼容)以摆脱所有臃肿的功能。
  • 好吧,严格来说,使用 XML 绑定的“每张图有数千行”仍然可以扩展到更多行代码,而整个 XML 后端甚至都看不到(DOM )。我正在做的定制不需要这些其他庞大的后端结构,这意味着实际过程中涉及的代码更少。
  • 感谢您的编辑,尽管我重新考虑了一切并决定只构建对象结构来包装我的系统需要的图表,而不是所有可用的各种图表。例如TSalesSummaryChartTInventorySalesChartTSalesPersonChart等。
猜你喜欢
  • 2022-01-20
  • 2016-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-22
  • 2014-05-20
  • 1970-01-01
  • 2023-01-12
相关资源
最近更新 更多