如何使用 karate dsl 读取 CDATA 元素
How to read CDATA elements using karate dsl
我的 XML 请求看起来像这样:
- def ref = ref.substring(0, 结束)
<ns:complete>
<ns:identifier>23265</ns:identifier>
<ns:taskData><![CDATA[<sch:SubscriptionApprovalResponse xmlns:sch="http://workflow.subscription.apimgt.carbon.wso2.org">
<sch:status>APPROVED</sch:status>
<sch:workflowExternalRef>#(ref)</sch:workflowExternalRef>
<sch:description></sch:description>
</sch:SubscriptionApprovalResponse>]]></ns:taskData>
</ns:complete>
我在 CDATA 正文中从外部传递 #(ref) 但它没有读取它。
我做错了什么吗?
是的,因为您正试图在 CDATA
部分中使用嵌入式表达式。我不能说没有完整的工作示例。
您应该分两步完成此操作或使用字符串 replace
:https://github.com/intuit/karate#replace
* def baz = 'blah'
* def foo = <bar>#(baz)</bar>
* def xml = <foo><Response><![CDATA[#(foo)]]></Response></foo>
* match xml == <foo><Response><![CDATA[<bar>blah</bar>]]></Response></foo>
* def xml = <foo><Response><![CDATA[<bar>@@baz@@</bar>]]></Response></foo>
* replace xml.@@baz@@ = 'blah'
* match xml == <foo><Response><![CDATA[<bar>blah</bar>]]></Response></foo>
我的 XML 请求看起来像这样:
- def ref = ref.substring(0, 结束)
<ns:complete>
<ns:identifier>23265</ns:identifier>
<ns:taskData><![CDATA[<sch:SubscriptionApprovalResponse xmlns:sch="http://workflow.subscription.apimgt.carbon.wso2.org">
<sch:status>APPROVED</sch:status>
<sch:workflowExternalRef>#(ref)</sch:workflowExternalRef>
<sch:description></sch:description>
</sch:SubscriptionApprovalResponse>]]></ns:taskData>
</ns:complete>
我在 CDATA 正文中从外部传递 #(ref) 但它没有读取它。
我做错了什么吗?
是的,因为您正试图在 CDATA
部分中使用嵌入式表达式。我不能说没有完整的工作示例。
您应该分两步完成此操作或使用字符串 replace
:https://github.com/intuit/karate#replace
* def baz = 'blah'
* def foo = <bar>#(baz)</bar>
* def xml = <foo><Response><![CDATA[#(foo)]]></Response></foo>
* match xml == <foo><Response><![CDATA[<bar>blah</bar>]]></Response></foo>
* def xml = <foo><Response><![CDATA[<bar>@@baz@@</bar>]]></Response></foo>
* replace xml.@@baz@@ = 'blah'
* match xml == <foo><Response><![CDATA[<bar>blah</bar>]]></Response></foo>