вопрос о разборе xml файла во Flex - PullRequest
1 голос
/ 31 августа 2010

Сейчас я столкнулся с небольшим проектом, в котором я должен представить пользователю таблицу peoridic. Однако это немного сложнее, чем просто файл изображения таблицы peoridic. Позвольте мне немного разбить его:

1.В этой же папке находится файл xml следующего формата:

<constraints>
<element>
 <name>Calcium</name>
 <abbreviation>Ca</abbreviation>
 <emissions>
  <wavelength>118</wavelength>
 </emissions>
 <standards>
  <concentration>0.01</concentration>
  <concentration>0.1</concentration>
 </standards>
</element>

в основном это просто указывает, какие элементы должны быть выделены в таблице peoridic. Так что после чтения из этого xml-файла наша таблица peoridic должна быть отражена, делая эти элементы желтыми и щелкающими, оставляя другие серыми и недоступными для клика. Атрибут name - это то, что мне нужно.

2. Во-вторых, нужно просто убедиться, что элементы в элементах периодической таблицы, указанные в файле xml, должны быть доступны для щелчка пользователем.

Поскольку я немного новичок в программировании на Flex, теперь меня больше всего волнуют две вещи. Первое - как выполнить синтаксический анализ xml в FLEX? Я делал этот анализ в C #, но понятия не имею, как это сделать. Во-вторых, как я должен изобразить периодическую таблицу? Я должен сделать элементы кликабельными. В-третьих, как мне сделать так, чтобы периодическая таблица знала об элементах, которые были проанализированы из файла xml, т.е. где я должен хранить эти извлеченные элементы?

Звучит немного сложно, мне просто нужны идеи или код, чтобы помочь мне начать, спасибо!

Ответы [ 2 ]

4 голосов
/ 01 сентября 2010

Синтаксический анализ XML довольно прост в ActionScript 3 с E4X и в некоторой степени похож на C # .

например

var table:XML = <constraints>
<element>
 <name>Calcium</name>
 <abbreviation>Ca</abbreviation>
 <emissions>
  <wavelength>118</wavelength>
 </emissions>
 <standards>
  <concentration>0.01</concentration>
  <concentration>0.1</concentration>
 </standards>
</element>
</constraints>
trace(table.element.name);

Изучите учебник E4X поYahoo Developer Network , чтобы начать легко.Остальное должно быть достаточно простым.

Для точка 2 вам нужно просто пройтись по именам элементов, а затем включить их представление / визуальный эквивалент объекта.

например,

for each (var element:XML in table.element.*) trace(element.name);//enable here instead of tracing

Обновление

Я немного повеселился с замечательным libspark SvgParser и периодической таблицей wikipedia svg .Это НЕ как любой должен писать код, это просто быстрый и грязный тест.

Вы можете посмотреть тест здесь и источник здесь .

вот предварительный просмотр: flex 3 periodic table test

Также может помочь отображение синтаксического анализа на C #.И я нашел другую замечательную статью E4X .

HTH, Джордж

2 голосов
/ 01 сентября 2010

Вам также нужно подумать о том, как вы собираетесь вставить свой XML в свое Flex-приложение, потому что Flex не может читать с локального файлового сервера.Вы можете связать XML с вашим приложением или загрузить его с сервера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...