本主题解释如何配置和应用 XML 转换器工具,该工具提供类似 XSLT 的功能来转换任何 XML。
本章包含:


了解 XML 转换器

SOAP 消息通常包含一个大的 XML 有效负载。您可能只对该负载的一小部分感兴趣,并且希望仅使用响应或请求的几个元素来创建回归控制。一次忽略所有这些元素会变得非常乏味。在这种情况下,使用 XML 转换器工具会更有效。

XML 转换器提供了类似 XSLT 的功能来转换任何 XML。如果您希望仅使用 SOAP 响应或请求的几个元素来创建回归控件,那么这是非常有用的。

配置 XML 转换器

若要配置 XML 断言器,请完成以下操作:

  1. 选择主测试套件节点,并单击 Add test or output 按钮。
  2. 从添加测试向导中选择 Standard Test> XML Transformer ,然后单击 Finish 按钮。将在测试套件中显示 XML Transformer 节点。
  3. 双击 XML Transformer 节点。

您可以配置以下选项:


添加回归控制

可以使用提取或修改的 XPath 值添加回归控件。右键单击包含 XML 转换器的 SOAP 客户机节点,并从快捷菜单中选择 Create Regression Control 。  将在 XML 转换器选项卡下出现一个 Transformed XML> Diff 节点。如果选择此节点,您将在 XML 转换器工具中看到添加到 Selected Xpaths 列表。

参数化 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 响应的完整性

默认情况下,将不会提取空元素。  这可能会影响可写数据源中使用的 XML 响应的完整性。例如,

<e>5</e>
<e/>
<e>6</e>
会生成一个看起来像下面这样的可写数据源


ROW 1 = 5
ROW 2 = 6
如果您喜欢在提取中表示所有节点(包括空元素):
  1. 启用 提取空元素为
  2. (可选)如果希望为每个提取的空元素添加一个“占位符”值,请在相邻的文本字段中指定所需的占位符字符串。


     
  3. 选择指定要提取什么的 XPaths 之一,然后单击 修改
  4. 确保 Extract 选项设置为 Content only
  5. 删除相关 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]




  6. 根据需要,对其他 XPaths 重复步骤 3-5。