在 Power Automate 中,是否可以使用 XPath 表达式从 DOCX“document.xml”文件获取表格单元格的完整内容?

问题描述 投票:0回答:2

使用 https://www.tachytelic.net/2021/05/power-automate-extract-text-from-word-docx-file/ 上的优秀指南,我可以设置 Power Automate 流程来提取DOCX 文件中的文本内容。获取文件内容后,我有一个具有以下表达式的撰写操作:

xpath(xml(outputs('Get_file_content')?['body']), '//*[name()=''w:t'']/text()')

这可以提取内容,但是,缺点之一是文本通常可以从 document.xml 文件中拆分为多个 w:t 节点,从而导致文本的每个部分都作为其自己的单独对象在撰写输出。例如,撰写操作的输出可能如下所示:

[
  "If ",
  "not, ",
  "this needs to be documented. "
]

但是,文档中出现的上述文本实际上应该是:

[
  "If not, this needs to be documented."
]

由于此文本包含在单个表格单元格中,是否可以调整上面的 XPath 表达式,以便它以某种方式连接或组合 w:t 节点(每个表格单元格)中的所有文本,以便文本值“在最终的 Compose 对象中不会以这种方式分割吗?

xpath docx power-automate
2个回答
0
投票

我会选择简单地用

join()
函数包装你的表达式...

join(xpath(xml(variables('XML')), '//*[name()=''w:t'']/text()'), '')

...您可以将分隔符更改为您想要的。


0
投票

由于 power-automate 仅支持 xpath 1.0,因此您被迫使用 xpath 范围之外的内容,例如 @Skin

的答案

如果您想要每个单元格中的这些字符串,您可以首先使用此 xpath:

//*[name()='w:tc']

并用以下方法循环该结果:

join(xpath(xml(variables('XML')), './/*[name()=''w:t'']/text()'), '')

注意

.
作为第二个 xpath 的开始,因此它将使用当前上下文。

© www.soinside.com 2019 - 2024. All rights reserved.