2013-11-15 3 views
0

Я пытаюсь использовать генерацию кода JAXB из XML-схемы для использования в проекте Android через библиотеку SimpleXML, в которой используется другой тип утверждения, чем JAXB (я не хочу включать 9 МБ lib tu поддерживает JAXB в моем проекте Android). См. Вопрос previously askedPython Regex соответствует многострочной аннотации Java

В основном, я пишу небольшой скрипт Python для выполнения необходимых изменений для каждого файла Java, сгенерированного с помощью инструмента xcj, и до сих пор он работает для удаления/модификации импорта, простой аннотации строк, а также аннотация, для которой List @XMLElement необходимо преобразовать в элемент @ElementList.

Единственная проблема, я столкнулся сейчас для удаления аннотаций на нескольких линиях, таких как @XMLSeeAlso или @XMLType как следующий

@XmlType(name = "AnimatedPictureType", propOrder = { 
    "resources", 
    "animation", 
    "caption" 
}) 

или

@XmlSeeAlso({ 
    BackgroundRGBColorType.class, 
    ForegroundRGBColorType.class 
}) 

Я пробовал различные стратегии, используя либо Multineline, DotAll, либо и то, и другое, но без каких-либо успехов. Я новичок в «расширенном» использовании регулярных выражений, а также в Python, поэтому мне, вероятно, не хватает чего-то глупого.

Для моей простой обработки XSD это единственный шаг, который я не могу запустить для создания полностью автоматизированного сценария с использованием xcj, а затем автоматически конвертировать аннотации JAXB в простые XML-файлы.

Заранее благодарю вас за помощь.

ответ

1

@Xml.*\}\) with dotall enabled должен, насколько мне известно, соответствовать любой аннотации, начинающейся с @Xml и заканчивающейся «)), даже если она многострочная.

Для хорошего зрения того, что ваше регулярное выражение на самом деле соответствует вы всегда можете проверить регулярные выражения на веб-сайтах, как https://pythex.org/

+0

Спасибо большое, я искал что-то «сложного», где-то это просто было достаточно. Извини за это ! –

Смежные вопросы