在Adobe Flex中编辑XML文档?

时间:2009-11-23 16:22:53

标签: xml flex flex3

我正在为Flex中的XML文档构建自定义结构化编辑器。我需要的是一种在XMLList上进行列表操作的方法,使用可编辑的数据网格或弹出窗口(UI方面,无论哪个都没关系。请不要关注它)。这样做的好习惯是什么?

这是一个示例结构,我可能想要执行的操作:

<itemList>
    <item id="1"/>
    <item id="2"/>
</itemList>

我可能想:

  • 在列表末尾添加一个新项目。
  • 删除现有项目
  • 以能够取消编辑的方式编辑项目(可能,这意味着制作项目的副本,编辑项目,并用编辑后的副本替换其来源?)
  • 重新订购商品

我该怎么做呢?

3 个答案:

答案 0 :(得分:1)

我们刚刚在我工作的地方构建了一个相当复杂的XML编辑器,我的第一个建议是,如果你可以避免它,除非你直接使用XMLListCollection,否则不要做那些困难的事情。 Flex的XMLListCollection是XMLListAdapter的容器,虽然它确实有效,但如果使用XMLList的父节点并使用本机XML函数则更好。如果你试图重复他们的努力,那就是漫长而噩梦。

那说: XMLListCollection是你的朋友,但如果你有很多数据绑定,请确保你有多个图层。我们最初总是从XML文档的根目录中使用ex4搜索,这花费了我们很多时间和精力。我们意识到我们可以将它分解为三个子列表,每次编辑都要快得多。

关于实际的用户界面,有很多方法可以做到这一点,这取决于你的XML整体结构。

如果您有多个itemLists,您可以使用树组件以及此处举例说明的一些代码:http://livedocs.adobe.com/flex/3/html/help.html?content=about_dataproviders_6.html

另一方面,如果只有一个itemList,那么我会有一个简单的List。这将允许您拖动项目并重新排序。如果你使用labelFunction,你可以让它返回项目的@id。您可以添加TextField和提交按钮以添加节点。也许是一个额外的删除按钮,但它不会那么难。

取消编辑会非常简单 - 只需等到“提交”命中,然后再将更改提交给XML。

答案 1 :(得分:1)

我个人将XML结构抽象为对象图,并在事后将对象序列化为XML。然后,您不会在编辑期间处理XML(在实时序列化显示之外或其他任何事情),并且您可以轻松使用来自处理Objects而不是解析/操作XML节点。

答案 2 :(得分:0)

是的,因为flex builder是一个基于eclipse的IDE使用Web Tools Platform。我没有在直接的flex builder上安装它,但你可以下载Eclipse J2EE版本,它包括WTP。然后只需将flex builder安装为插件即可。我认为您应该能够找到J2EE IDE的Ganymede版本。但是,如果你不能,请查看在Galileo中获取Flex的解决方法,你就可以了!