我正在编写这个在Smooks中运行的groovy脚本并编辑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
基本上,脚本在运行时生成的groovy类中运行。
答案 0 :(得分:2)
尝试格式化元素,如下所示:
"elementname"('xsi:nil' : 'true', 'xmlns:xsi' : 'http://www.w3.org/2001/XMLSchema-instance')
这将返回以下XML标记:
<elementname xsi:nil='true' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' />
希望这能解决你的问题。