使用Groovy + Smooks将名称空间声明添加到现有XML

时间:2011-02-23 09:48:35

标签: xml groovy namespaces declaration

我正在编写这个在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类中运行。

1 个答案:

答案 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' />

希望这能解决你的问题。