Я пишу этот отличный скрипт, который запускается внутри Smooks и редактирует XML. Я пытаюсь добавить xsi: nil = "true" в пустые поля, и у меня проблема в том, что объявление пространства имен xsi не добавлено в корневое поле. Вот что я попробовал:
element['@xsi:nil'] = 'true'
и
def nil = doc.createAttributeNS("http://www.w3.org/2001/XMLSchema-instance", 'xsi:nil')
nil.setValue('true');
element.setAttributeNodeNS(nil)
Оба они добавят атрибут, но не объявление NS.
Я тоже пробовал это, но это приводит к ошибке переполнения стека:
def doc = element.getOwnerDocument();
doc.declareNamespace(xsi: 'http://www.example.org/xsi')
Вот ссылка на документацию Smooks:
http://www.smooks.org/mediawiki/index.php?title=V1.4:groovy
По сути, скрипт выполняется внутри классного класса, который генерируется во время выполнения.