在UiPath中如何提取XML重名标签的第二个节点,无第二个则取第一个?
解决方法
核心思路
通过带判断逻辑的XPath表达式直接匹配目标节点,无需额外编写条件分支,逻辑为:取每个<Example>节点下的最后一个<Address>节点值,刚好适配「有2个取第二个,仅1个取第一个」的需求。
UiPath 操作步骤
- 先将你的XML内容加载到一个
XmlDocument类型的变量中,例如变量命名为xml_Doc - 拖拽「Execute XPath」活动到流程中,按如下配置属性:
- XMLDocument字段:选择提前定义的
xml_Doc变量 - XPathString字段:填入表达式
//Example/Address[last()]/text() - 输出Result字段:将变量类型设置为
IEnumerable<XmlNode>或List<String>,不要使用单个String类型,避免UiPath默认只返回第一个匹配结果
- XMLDocument字段:选择提前定义的
结果验证
针对你提供的示例XML,运行后将返回两个结果:New York US、Nairobi KE,完全符合需求。
备选方案
如果你需要逐个处理每个<Example>节点,可以先遍历所有//Example节点,在循环内对当前节点执行相对路径查询./Address[last()]/text(),得到对应节点的目标地址值。
问题原因说明
你之前只返回第一个标签值,是因为未指定节点索引规则,且输出变量使用了单个字符串类型,UiPath默认取首个匹配结果赋值。
内容的提问来源于stack exchange,提问作者Joana Pinto
相关产品推荐
相关产品推荐

