2010-09-30 50 views
0

我想创建一个表单(flash或java/ajax),它允许从XML文件中提取选择数据。使用xml或excel数据下拉列表?

实施例:

甲环助洗剂应用 - 用户选择环在一个下拉设定,然后他们在另一个下拉菜单中选择一个金刚石下来。但钻石的价格每天都会根据市场变化,所以我们需要轻松更新这些数据 - 因此是一个xml或excel文件。

如果可以链接数据会更好 - 比如选择公主切割钻石,然后仅与公主切割兼容的设置显示出来,然后选择设置后,只有右侧的钻石大小为设置展示。

想法?

谢谢!

回答

0

我认为JSON更适合这样的任务。假设您的数据存储在数据库(而不是XML或Excel文件)中,您可以使用PHP或任何服务器端语言来返回一组对象,将它们编码为JSON字符串并将此信息传递给Flash或JS。在Flash(或Javascript)中解码JSON字符串将返回要在客户端管理的对象集合。

这些对象基本上就是您的菜单可以查询的数据集。

实际上,当用户启动您的应用程序时,您只需要一次服务器调用就可以获得所有必要的数据,这些数据可以成为您特定会话的数据集。您的数据库当然可以根据需要随时更新。

至于你的数据对象的一般结构,试着保持你的数据分开的担忧,我建议避免捆绑在一起,以保持你的应用程序的灵活性。您可能从一开始就没有找到最佳结构,例如,您可以对菜单布局进行更改,例如,您仍可以重复使用大部分代码。

 
//A basic example of DataObject that could store the values retrieved from the XML 
public class DataObject 
{ 
    public var gemTypes:Array = ["Diamond" , "Ruby" , etc...] 
    public var cutTypes:Array = ['Princess' , 'Emerald', etc...] 
} 

//A couple of classes you could use to structure your menu 
public class AbstractGem 
{ 
    protected var _cutType:String; 
    protected var _settings:Object; 
    protected var _sizes:Array; 

} 
public class Diamond extends AbstractGem 
{ 
} 

public class Main 
{ 
    public function Main() 
    { 
     //if a menu calls the princess cut diamond, you can use the properties 
     //set from the XML to determine what submenus will be called 
     var princess:AbstractGem = new Diamond(); 
     princess.sizes = [1.5 , 1.8 , 2.0 , ......, 8.0]; 
     princess.cutType = "Princess" 
    } 
} 


+0

不幸的是,由于我们的平台,数据必须是外部的。我希望得到一个xml或excel文件,这样我就可以让人们以库存的形式格式化并上传它。 – Jason 2010-10-05 13:33:09

+0

然后,您应该在加载XML之后去解析XML,解析它以创建一组数据对象,我发现它比直接从XML获取数据到应用程序更好。您可以根据应用程序的结构来构造对象,而不是绑定到XML格式。 – PatrickS 2010-10-05 14:16:05