2015-09-18 46 views
0

我正在編寫一個groovy腳本,它正在使用groovyUtils更新請求消息中xml元素的文本。我無法更新具有xsi:nil屬性集的元素的文本。我想設置文本並擺脫xsi:nil屬性。下面的腳本:在soapui中使用groovy爲當前設置爲xsi的xml元素設置文本:無

def text = ''' 
<list xmlns:i="http://www.w3.org/2001/XMLSchema-instance"> 
    <technology> 
     <name i:nil="true" /> 
    </technology> 
</list> 
''' 

def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context) 
def holder = groovyUtils.getXmlHolder(text) 
holder["//name"] = "newtext" 

log.info holder.xml 

返回:

<list xmlns:i="http://www.w3.org/2001/XMLSchema-instance"> 
    <technology> 
     <name i:nil="true">newtext</name> 
    </technology> 
</list> 

我應該使用什麼腳本來擺脫我的:無屬性。我想輸出是:

<list xmlns:i="http://www.w3.org/2001/XMLSchema-instance"> 
    <technology> 
     <name>newtext</name> 
    </technology> 
</list> 
+0

爲什麼你想要擺脫i:nil屬性? –

回答

2

只需使用removeAttribute(String nodeName)方法如下:

def text = ''' 
<list xmlns:i="http://www.w3.org/2001/XMLSchema-instance"> 
    <technology> 
     <name i:nil="true" /> 
    </technology> 
</list> 
''' 

def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context) 
def holder = groovyUtils.getXmlHolder(text) 
holder["//name"] = "newtext" 

def node = holder.getDomNode('//name') 
node.removeAttribute('i:nil') 

log.info holder.xml 

另外,您還可以使用removeAttributeNS(String namespaceUri,String localName)

def node = holder.getDomNode('//name') 
node.removeAttributeNS('http://www.w3.org/2001/XMLSchema-instance','nil') 

此代碼輸出:

<list xmlns:i="http://www.w3.org/2001/XMLSchema-instance"> 
    <technology> 
     <name>newtext</name> 
    </technology> 
</list> 

希望這會有所幫助,

+0

這就是我一直在尋找的。如果你知道這是有記錄的,你可以發佈鏈接嗎?我很難在網上找到好的文檔。 – garrmark

+0

@garrmark很高興幫助你。我在答案中添加了方法api的鏈接,查看':)'。 – albciff

相關問題