2009-11-23 2 views
0

Я создаю собственный структурированный редактор для XML-документа в Flex. Мне нужен способ сделать операции с списками в XMLList с минимальной суетой, используя либо редактируемый datagrid, либо всплывающее окно (UI-мудрый, это не имеет значения.) Пожалуйста, не сосредотачивайтесь на этом). Какая хорошая идиома для этого?Редактирование XML-документа в Adobe Flex?

Ниже приведен пример структуры, с операциями, которые я, возможно, захотите сделать:

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

я мог бы хотеть:

  • добавить новый элемент в конец списка.
  • удалить существующий элемент
  • отредактируйте элемент таким образом, чтобы можно было отменить редактирование (предположительно это означает, что нужно сделать копию объекта, отредактировать его и заменить его исходным кодом на отредактированную копию?)
  • повторно заказать товар

Как я должен идти об этом?

ответ

1

Мы просто создали довольно сложный XML-редактор, где я работаю, и мое первое предложение, если вы можете его избежать, НЕ ДЕЛАЙТЕ ВЕЩИ, ЧТО FLEX ИМЕЕТ ИХ, ЕСЛИ ВЫ ИСПОЛЬЗУЕТЕ XMLListCollection ПРЯМО. FlexListCollection Flex является контейнером для XMLListAdapter, и, хотя он работает, гораздо лучше использовать родительский узел XMLList и использовать собственные функции XML. Если вы попытаетесь удвоить свои усилия, это долгий и кошмарный.

Сказанное: XMLListCollection - ваш друг, но убедитесь, что у вас много слоев, если у вас много привязки данных. Мы изначально всегда использовали ex4-поиск из корня нашего XML-документа и стоили нам много времени и энергии. Мы поняли, что можем разбить его на три подписок, и каждое редактирование было намного быстрее.

Что касается фактического пользовательского интерфейса, то есть несколько способов сделать это, и это зависит от того, как ваш XML структурирован в целом.

Если у вас есть несколько itemLists, вы могли бы пожелать, чтобы использовать компонент дерева вместе с некоторыми из кода на примере здесь: http://livedocs.adobe.com/flex/3/html/help.html?content=about_dataproviders_6.html

С другой стороны, если есть только один ITEMLIST, то я бы просто Список. Это позволит вам перетаскивать элементы и переупорядочивать их. Если вы использовали labelFunction, вы можете вернуть его @id. Вы могли бы добавить TextField и кнопку отправки для добавления узлов. Возможно, дополнительная кнопка для удаления, но это было бы не так сложно.

Отмена редактирования будет особенно простой - просто подождите, пока «Отправить» не ударит, прежде чем совершить изменение XML.

0

Да, поскольку flex builder - это платформа для создания веб-инструментов, основанная на Eclipse. Я не устанавливал его на прямолинейный строитель Flex, но вы можете загрузить версию Eclipse J2EE и включить WTP. Затем просто установите flex builder в качестве подключаемого модуля. Я думаю, вы сможете найти версию Ganmede J2EE IDE. Однако, если вы не можете взглянуть на обходной путь для получения Flex в Galileo, и вам хорошо идти!

1

Я лично аннонил структуру XML на объект-граф и сериализую объекты в XML после факта.Тогда вы не имеете дело с XML во время редактирования (за пределами сериализованного дисплея в реальном времени или что-то еще), и вы получаете легкость использования, возникающую в результате работы с объектами, а не для разбора/управления узлами XML.