【发布时间】:2015-05-09 04:09:50
【问题描述】:
我正在尝试使用 xmlStarlet 删除 XML 文件中的特定元素,但我遇到了 XPath 规范的问题。这是我需要删除的节点/元素,即在 XPath 中指定:
<ShowFrame/>
<DoAction>
<actions>
<Stop/>
<EndAction/>
</actions>
</DoAction>
<ShowFrame/>
问题在于,还有其他 DoAction 元素带有我不想删除的子动作。只有具有子动作的 DoAction 元素具有这两个子动作:Stop 和 EndAction。我不想删除的 DoAction 元素在 actions 子项中有不同的子项。
当我在删除 xmlStarlet 命令中使用此 XPath 规范时,仅删除了 Stop 后代:
"/swf/Header/tags/DoAction/descendant::actions/descendant::Stop"
但我想删除完整的 DoAction 元素。实际上,我真的需要删除 DoAction 元素之后的 ShowFrame 元素,这样删除后就不会剩下 2 个相邻的 ShowFrame 元素了。
我一直在尝试研究 XPath 规范,但我不明白。我找到的示例使用属性,但此 XML 文件中没有属性。
对此的任何帮助将不胜感激。
谢谢,
-安德烈斯
【问题讨论】: