2011-02-23 90 views
0

我正在写这个在Smooks中运行并编辑XML的groovy脚本。我试图将xsi:nil =“true”添加到空字段,我遇到的问题是xsi名称空间声明未添加到根字段。下面是我的尝试:使用Groovy + Smooks向现有XML添加名称空间声明

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的文件:即在产生一个Groovy类中 http://www.smooks.org/mediawiki/index.php?title=V1.4:groovy

基本上运行脚本运行。

回答

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

希望这能解决你的问题。