首页 > 解决方案 > 如何在 Groovy 中构建 XML 命名空间

问题描述

我有一个必须在 Groovy 中构建的 SOAP XML。我是 ABAP 程序员,我不知道该怎么做。谁能帮帮我吗?代码下方:

<soapenv:Header>
  <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" 
	             xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
	<wsu:Timestamp wsu:Id="TS-' lv_timestamp_id '">
	  <wsu:Created>+lv_created+</wsu:Created>
	  <wsu:Expires>+lv_expires+</wsu:Expires>
	</wsu:Timestamp>
	<wsse:UsernameToken wsu:Id="UsernameToken-">
	  <wsse:Username>+lv_username+</wsse:Username>
	  <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest">+lv_sb64password+</wsse:Password>
	  <wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">+lv_b64nonce+</wsse:Nonce>
	  <wsu:Created>+lv_created+</wsu:Created>
	</wsse:UsernameToken>
   </wsse:Security>
</soapenv:Header>

标签: groovyxml-namespaces

解决方案


这是文档: http: //groovy-lang.org/processing-xml.html#_markupbuilder

像这样的东西应该工作。

def xml = new MarkupBuilder(writer)
xml.'soapenv:Header'{
  'wsse:Security'('xmlns:wsse': 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd', 'xmlns:wsu': "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd")     
    'wsu:Timestamp'('wsu:Id':"TS-' lv_timestamp_id '"){
      'wsu:Created'(lv_created)
      'wsu:Expires'(lv_expires)
    }
  }
}

推荐阅读