本主题解释如何配置和应用 XML 转换器工具,该工具提供类似 XSLT 的功能来转换任何 XML。
本章包含:
SOAP 消息通常包含一个大的 XML 有效负载。您可能只对该负载的一小部分感兴趣,并且希望仅使用响应或请求的几个元素来创建回归控制。一次忽略所有这些元素会变得非常乏味。在这种情况下,使用 XML 转换器工具会更有效。
XML 转换器提供了类似 XSLT 的功能来转换任何 XML。如果您希望仅使用 SOAP 响应或请求的几个元素来创建回归控件,那么这是非常有用的。
若要配置 XML 断言器,请完成以下操作:
您可以配置以下选项:
[1]
更改为 [2]
。编辑 XPath 文本之后,单击 Validate 按钮来验证 Xpath 格式,然后单击 OK。XPath/Parent
将输出 <parent>VALUE</parent>
。您可以配置以下 整个元素选项:XPath/Parent
将输出 VALUE
。您可以配置 Text Content: 提取所选元素的文本内容,或 All Child Nodes: 提取所选定元素的所有子节点。如果选择此选项,内容将输出为格式良好的 XML。例如,XML 编码的值为:
<foo
将输出为:
<root> <ElementName><foo></ElementName> </root>
可以使用提取或修改的 XPath 值添加回归控件。右键单击包含 XML 转换器的 SOAP 客户机节点,并从快捷菜单中选择 Create Regression Control 。 将在 XML 转换器选项卡下出现一个 Transformed XML> Diff 节点。如果选择此节点,您将在 XML 转换器工具中看到添加到 Selected Xpaths 列表。
可以参数化 Xpaths 来引用 测试或响应程序套件 变量、环境变量和数据源值。 引用变量的语法为 ${myVariableName}。引用 XML 数据库值和数据源值的语法为:${myColumnName}.
例如,如果 ${XPath Key} 是数据源列名,则可以使用
/*[local-name(.)="bookstore" and namespace-uri(.)=""]/*[local-name(.)="book" 和
namespace-uri(.)=""][child::node()[local-name(.)="title" and text()="${XPath Key}"]]
默认情况下,将不会提取空元素。 这可能会影响可写数据源中使用的 XML 响应的完整性。例如,
<e>5</e> <e/> <e>6</e> |
ROW 1 = 5 ROW 2 = 6 |
删除相关 XPath(s) 末端的 /text()
。例如,如果当前 XPath 为
/*[local-name(.)="Envelope" and namespace-uri(.)="http://schemas.xmlsoap.org/soap/envelope/"]/.../*[local-name(.)="i" and namespace-uri(.)=""][1]/text() |
则将其编辑为
/*[local-name(.)="Envelope" and namespace-uri(.)="http://schemas.xmlsoap.org/soap/envelope/"]/.../*[local-name(.)="i" and namespace-uri(.)=""][1] |