首页 > 解决方案 > 搜索/解析 XML 并排除某些节点而不删除它们?

问题描述

下面的命令允许我解析除节点“wp14:sizeRelH”和“wp14:sizeRelV”之外的所有节点中的文本

XML.search('//wp14:sizeRelH', '//wp14:sizeRelV').remove.search('//text()')

我想做同样的事情,但我不想从 XML 中删除节点 'wp14:sizeRelH' 和 'wp14:sizeRelV'。

这样,我可以解析 XML 树并更改每个节点中的文本,而不会影响节点 'wp14:sizeRelH' 和 'wp14:sizeRelV'

编辑:如果节点'//wp14:sizeRelH'或'//wp14:sizeRelV'不在XML中,那么我的命令也不会返回任何不好的东西:(

标签: rubyxmlnokogiri

解决方案


看来我找到了答案。我使用//text()[not...]但必须找到我不想包含的文本的祖先名称:

XML.search('//text()[not(ancestor::wp14:pctHeight or ancestor::wp14:pctWidth or ancestor::wp:posOffset)]')

推荐阅读