我想对服务器A进行SOAP请求,从响应中获得响应并形成对服务器B的肥皂请求。问题是对服务器A的请求不能精确-这意味着您只能请求例如角色,但不是特定角色。因此,当只给定roleName时,我需要找到并确定节点上所有子项,属性,文本(最多120个)所需的角色。
void Update()
{
if(Input.GetKeyDown(KeyCode.A)
{
GameObject go = GameObject.Find("Cloner");
Destroy(go);
SceneManager.LoadScene("Home");
}
}
我使用xml模块来解析响应:
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
xmlns:ns2="http://www.test.de">
<soap:Header/>
<soap:Body>
<ns2:getRolesResponse xmlns:ns2=\"http://www.test.de">
<role>
<info roleName="myrole" roleOperator="UNION" systemType="false">
<displayName default="MAster_of_desaster"/>
<description default="Administrator"/>
</info>
<rights>
<documentAccessRights>
<documentTypeAccess documentTypeName="doc_ty1">
<right access="create" outcome="enabled"/>
<right access="read" outcome="enabled"/>
</documentTypeAccess>
<documentTypeAccess documentTypeName="doc_ty2">
<right access="create" outcome="enabled"/>
<right access="read" outcome="enabled"/>
<right access="update" outcome="enabled"/>
<right access="delete" outcome="enabled"/>
</documentTypeAccess>
...
并使用json_query过滤器解析匹配项。
- name: "extract the role to copy from the soap response"
xml:
xmlstring: "{{ out.content }}"
namespaces:
soap: http://www.w3.org/2003/05/soap-envelope
ns2: http://www.test.de/
xpath: /soap:Envelope/soap:Body/ns2:getRolesResponse/role/info[@roleName="{{ test }}"]/../descendant::*
content: attribute
register: xmlresponse
无论如何...匹配破坏了XML层次结构。我只想从“ role”元素中获取整个xml字符串。
有什么想法吗?
更新 xpath应该选择Rolename不是“ xyz”的所有角色
"xmlresponse.matches | json_query('[*].documentTypeAccess')": [
{
"documentTypeName": "doc_ty1"
},
{
"documentTypeName": "doc_ty2"
},
//role/info[not(@roleName="{{ test }}")]/..
不幸的是,xmlresponse没有注册剩余的xml ... 我在做什么错了?