XPath查找文本拆分多个后代

时间:2018-04-25 23:57:22

标签: xml xpath openxml

我有一个OOXML(来自Word .docx文件),如下所示:

//w:tr[descendant::text()[contains(., "~TABLE_xxx~")]]

我想找到后代文本包含的所有元素" ~TABLE_xxx~ "。

我尝试了以下内容:

<w:tr>

但是,这只匹配我的doc的第一个<w:r>。我的猜测是,因为第二个文本在不同的{{1}}(Word&#34;运行&#34;文本)中分割了文本,所以我没有得到匹配。

这是怎么回事?

2 个答案:

答案 0 :(得分:0)

按&#39; xxx&#39;不是一个选择?

//w:tr[descendant::text()[contains(., "xxx")]]

答案 1 :(得分:0)

测试文本节点是错误的方法,特别是对于OOXML,它经常将字符串分解为w:r次运行。相反,请测试string-values

这个XPath,

//w:tr[contains(.,"~TABLE_xxx~")]

将选择其字符串值包含目标字符串的所有w:tr个元素。

另请参阅: Testing text() nodes vs string values in XPath