XML 软件包 中使用操作的示例

使用 XML 软件包 创建 机器人,用于从 XML 文件读取数据并写入到 Excel 工作表中。

本教程中使用的 XML 示例结构如下:
<movies>
    <movie genre="" year="">
        <name></name>
        <description></description>
        <director></director>
        <writers>
            <writer type=""></writer>
            <writer type=""></writer>
        </writers>
        <rating>R</rating>
    </movie>
</movies>

在开始之前,下载一个示例 XML 文件。

本教程旨在演示如何执行以下操作:
  • 使用 XPath 表达式获取具有特定值的节点集,并遍历节点集中的项目,例如本教程中具有特定评分的电影。
  • 使用 XPath 函数遍历子节点集。
  • 连接变量以创建字符串。
  • 将数据写入 Excel 工作表。

先决条件

请确保以下各项:

  • 知道如何创建 机器人
  • 熟悉 Control Room 用户界面。

过程

  1. 创建一个 机器人 并将其命名为 XMLDataReader
  2. 添加一个步骤,将所有打开 Excel 工作表的任务进行分组。
    1. 机器人编辑器 中,将步骤 > 步骤 操作 添加到开始流程之后。
      注: 要添加 操作,请在操作窗格中搜索 操作,然后将其拖动到 机器人编辑器 中的 机器人 流程中。
    2. 标题中,输入打开 Excel 工作表并保存 操作
  3. 要创建和打开 Excel 工作表,请使用Excel 高级版 > 创建工作簿
    1. Excel 高级版 > 创建工作簿 操作 添加到步骤 操作 中。
    2. 文件路径中输入 C:\movies\movies.xlsx,并保存 操作。 如果指定路径中不存在 movies 文件夹,请在该路径中创建 movies 文件夹。
  4. 要选择 Excel 工作表上的第一个单元格,请使用 Excel 高级版 > 转到单元格 操作
    1. Excel 高级版 > 转到单元格 操作添加到 Excel 高级版: 创建工作簿操作之后。
    2. 单击特定单元格(如果尚未选中),然后输入 A1
    3. 保存操作。
  5. 创建另一个步骤,汇总所有用于检索 XML 数据的任务。
    1. 在第一个步骤 操作 之后添加步骤 > 步骤操作。
    2. 标题中,输入获取 XML 数据并保存 操作
  6. 启动 XML 会话。
    1. 获取 XML 数据 步骤中添加 XML > 开始会话 操作
    2. 文件中,选择桌面,浏览并选择您下载的示例 XML 文件。
    3. 保存更改。
  7. 要获取所有评级为 R 的电影节点,请使用获取多个节点 操作
    1. XML > 获取多个节点操作添加到开始会话 操作之后。
    2. XPath 表达式中输入 //movie[rating/text()=\'R\'],并保存 操作
      选定的节点集存储在系统变量中,现在可用于 XML 数据集中的每个节点迭代器。
    3. 为确保操作检索整个节点集而不仅仅是文本节点,请单击 Xpath 表达式
  8. 使用循环操作遍历获取多个节点 操作 检索到的选定节点集。
    1. 循环 > 循环添加到 XML: 获取多个节点 操作 之后。
    2. 迭代器下,选择 XML > 对于 XML 数据集中的每个节点,作为迭代器。
    3. 将当前行分配给此变量中,单击 (x) 并创建一个默认名称的变量,例如,XMLNode。 节点集中的每个项目现在都可以通过该变量获取。
    4. 保存 操作
  9. 要从迭代的节点中获取电影名称,请使用获取单个节点 操作
    1. XML > 获取单个节点操作添加到循环: 循环 操作 中。
    2. XPath 表达式中,输入 $XMLNode$/name
    3. 将输出分配给变量中,创建一个变量,并将其命名为 sMovieName
    4. 保存 操作
  10. 要从 XMLNode 变量中写入电影名称,请使用设置单元格 操作
    1. 获取单个节点 操作 之后添加Excel 高级版 > 设置单元格 操作
    2. 单击活动单元格,在单元格值中输入 $sMovieName$,并保存 操作
  11. 要在 Excel 表中选择一个新单元格,请使用转到单元格 操作
    1. 设置单元格 操作后的转到单元格 操作添加到Excel 高级版: 设置单元格 操作 之后。
    2. 单击活动单元格,选择右侧的一个单元格,然后保存 操作
  12. 要从迭代的节点中获取导演的名字,请使用获取单个节点 操作
    1. XML > 获取单个节点 操作 添加到 Excel 高级版: 转到单元格 操作 之后。
    2. XPath 表达式中输入 $XMLNode$/director
    3. 将输出赋给变量中,创建一个变量,名称为:sDirector
    4. 保存 操作
  13. 要从 XMLNode 变量中写入导演姓名,请使用设置单元格 操作
    1. Excel 高级版 > 设置单元格 操作添加到 XML: 获取单个节点 操作 之后。
    2. 单击活动单元格,在单元格值中输入 $sDirector$,然后保存 操作
  14. 要在 Excel 表中选择一个新单元格,请使用转到单元格 操作
    1. 转到单元格 操作 添加到 Excel 高级版: 设置单元格 操作 之后。
    2. 单击活动单元格,选择右侧的一个单元格,然后保存操作
  15. 因为<作家们>节点可能包含多个<作家>节点,获取每个编剧的名字,将名字连接起来,并将它们写入单个单元格,而不是将值写入多个单元格。 为此,请在当前的循环 操作中添加循环 操作
    1. 要获取节点内的<作家>节点数,<作家们>XML > 执行 XPath 函数 添加到 Excel 高级版: 设置单元格 操作 之后。 在 XPath 表达式中输入 count($XMLNode$/writers/writer)。 在将输出分配给变量中,创建一个名为 sWriterCount 的变量。
      您将使用<作家>节点数以遍历所有<作家>节点。
    2. 循环 > 循环 操作添加到 XML: 执行 XPath 函数 操作 之后。
      重要: 必须将第二个循环 操作添加到主循环 操作中。
    3. 迭代器下,选择 n 次 作为迭代器。
    4. 次数中,输入以下内容:$sWriterCount.String:toNumber$
      注: sWriterCount 包含一个字符串值。 要将字符串转换为数字,可以使用
      lt;variable name>.String:toNumber$ 格式,例如,$sWriterCount.String:toNumber$。
    5. 为变量指定当前值(可选)中,创建一个名称为 Counter 的变量。
    6. 保存 操作
  16. 要连接所有编剧节点的值,请创建一个字符串变量。
    1. 变量窗格中,单击加号 (+) 图标。
      将打开创建变量窗口。
    2. 类型中,选择字符串
    3. 名称中,输入 sWriters
    4. 单击创建
  17. 要从迭代的<作家>节点中获取值,使用获取单个节点 操作
    1. XML > 获取单个节点 操作 添加到第二个循环 操作 中。
    2. XPath 表达式中输入 $XMLNode$/writers/writer[$Counter.Number:toString$]
      使用 Counter 变量,可以访问特定索引处的节点。 请注意,由于 Counter 变量包含数值,因此将 .Number:toString$ 表达式添加到 Counter 变量中,以将其转换为字符串。
    3. 将输出分配给变量中,创建一个变量,并将其命名为 sWriter
    4. 保存 操作
  18. 使用 字符串 > 分配 操作,从写入器节点分配值。
    1. 字符串 > 分配 操作 添加到第二个循环的XML: 获取单个节点之后。
    2. 选择源字符串变量/值(可选)中,输入 $sWriters$, $sWriter$
    3. 选择目标字符串变量中,选择sWriters
    4. 保存 操作
    内部循环完成后,sWriters 变量将包含所有作家的名称。
  19. 要将编剧姓名写入新单元格,请在主循环中使用 Excel 高级版 > 设置单元格 操作。
    1. 在第一个循环 操作内的循环操作之后添加Excel 高级版 > 设置单元格 操作
    2. 单击活动单元格
    3. 单元格值中输入 $sWriters$
    4. 保存 操作
    从一个节点检索到的数据<电影>被写入一行。 要将来自下一个节点的数据<电影>写入,您必须选择 Excel 工作表中的下一行。
  20. 要将光标移动到下一行,请使用Excel 高级版 > 转到单元格 操作
    1. 设置单元格 操作之后添加转到单元格 操作
    2. 单击活动单元格,选择行首,然后保存 操作
    3. 再次添加转到单元格 操作。 单击活动单元格,选择下方一个单元格,然后保存 操作
  21. 在检索到的节点集中迭代<电影>下一个节点之前,必须重置 sWriters 变量。 要重置 sWriters 变量,请执行以下步骤:
    1. 字符串 > 分配 操作添加到主循环的 Excel 高级版: 转到单元格之后。
    2. 选择源字符串变量/值(可选)留空。
    3. 选择目标字符串变量中,选择sWriters
    4. 保存 操作
  22. 创建新步骤。
    1. 在第二个步骤操作之后添加步骤 > 步骤操作。
    2. 标题中,输入关闭文件
  23. 要关闭 Excel 工作表,请使用 Excel 高级版 关闭 操作
    1. 关闭文件步骤中添加 Excel 高级版 > 关闭
    2. 保存更改。
  24. 运行 机器人