Десериализовать Android Layout XML? - PullRequest
0 голосов
/ 26 июня 2011

Какой лучший способ для меня взять файл макета Android android и автоматически сгенерировать эквивалентный код Java?Работает ли такой инструмент, как JAXB, и если да, то как мне его использовать?

Ответы [ 2 ]

1 голос
/ 26 июня 2011

Это интересная идея, хотя и немного бесполезная ИМХО. Зачем кому-то это делать? Раздувание XML является очень быстрой операцией и скрывает большую сложность - например, он учитывает текущий DisplayMetrics и пересчитывает параметры макета (ширина / высота) в соответствии с плотностью и размером экрана ... Это также очень быстро поскольку он фактически не требует синтаксического анализа XML - синтаксический анализ выполняется во время компиляции, и то, что на самом деле хранится в Android, является двоичной версией макета, оптимизированной для эффективности (поэтому вы не можете динамически создавать макет XML из файла XML).

Если вы хотите изменить код Java и добавить / удалить некоторые элементы, то гораздо эффективнее раздувать XML, а затем выполнять все модификации, не допуская беспорядочных кодов, и все вычисления выполняются за вас ...

0 голосов
/ 26 июня 2011

Какой лучший способ для меня взять файл макета Android android и автоматически сгенерировать эквивалентный код Java?

Шаг # 1: проанализировать XML.

Шаг № 2: Сгенерировать код Java. Вам придется помолиться о том, чтобы вы могли создать свою собственную реализацию AttributeSet, которая работает с вашим сгенерированным кодом, иначе это будет очень сложной проблемой.

Работает ли такой инструмент, как JAXB

AFAIK, JAXB нужна XML-схема, и такая схема невозможна для файла макета Android.

Какую бы проблему вы не пытались решить таким образом, вероятно, есть лучшее решение.

Мне просто нужен простой способ взять макет android xml и передать его, скажем, инструменту командной строки для генерации эквивалентной Java.

Я серьезно сомневаюсь, что это будет "просто" для любого разумного определения термина.

...